Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 15:13   #21
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

__________
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 10.04.2011 в 15:23. Причина: Удалите
Сtrl вне форума Ответить с цитированием
Старый 10.04.2011, 15:16   #22
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

А! Все дело в том, что я немного напутал с синтаксисом. Все, я исправил код в посте #15, попробуйте еще раз...
Все работает отлично.

Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 10.04.2011 в 15:25. Причина: Добавил изображение
Сtrl вне форума Ответить с цитированием
Старый 10.04.2011, 18:03   #23
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Все работает отлично.
Поздравляю!
...
А теперь представим, что я, или госп. SeventhKey, посидев в другом игорном клубе, захотели поменять вероятности. Вот так, например: { 0.13, 0.17, 0.28, 0.22, 0.12, 0.08 }. Нам теперь что, при каждом изменении исходных данных (а ведь может ещё и число исходов измениться - я вот предложил промоделировать игральный кубик со свинцом внутри, а ТС нравятся карты), звать программиста, чтобы тот шаманил над кодом?
Vago вне форума Ответить с цитированием
Старый 10.04.2011, 18:23   #24
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
звать программиста, чтобы тот шаманил над кодом?
Ага. Поставленную задачу я решил. Делать код гибким - более долгая и трудоемкая задача. Но выполнить ее можно по тому же принципу.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 10.04.2011, 18:53   #25
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Сtrl Посмотреть сообщение
Поставленную задачу я решил. Делать код гибким - более долгая и трудоемкая задача.
Не, ну можно, конечно, написать узкоспециализированный калькулятор для сложения 2 и 2, а за версию, складывающую 3 и 3, - требовать с заказчика отдельную оплату... Хочу себе такого доверчивого заказчика!
...
Ладно... Наблюдение за детишками в песочнице - хорошо в меру...
Код:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define  PI          3.14159265358979323846
#define  N_RESULTS   6

int GetRand2( int n, double* freq ) {

   int      k = 0;
   double   F = freq[0] ,
            r = rand() / double( RAND_MAX ) ;

   while ( r > F ) {
      if ( ++k == n )
         return k ;
      F += freq[k] ;
   }

   return k+1 ;

}



int main() {
	
   double   f[N_RESULTS] ,
            freq0[N_RESULTS] = { 0.13, 0.17, 0.28, 0.22, 0.12, 0.08 }  ;
   int      k,
            nSeeds ; 

   printf( "Number of seeds ? " ); scanf( "%d", &nSeeds ) ;

   srand(time(0)) ;
   printf("rand nums' frequencies for %d seeds:\n", nSeeds ) ;

   for ( k = 0; k < N_RESULTS; k++ )
      f[k] = 0. ;

   for (int i = 0; i < nSeeds; i++) {
      k = GetRand2( N_RESULTS, freq0 ) ;
      f[k-1] += 1. / double( nSeeds ) ;
   }

   for ( k = 0; k < N_RESULTS; k++ ) 
      printf( "%1d - %.3f\n", k+1, f[k] ) ;

   getchar();
   return 0 ;

}
...
Уважаемый EC.cpp, меня сперва почему-то потянуло подбирать параметры генератора нормального распределения, а там, всё, что у меня есть, в конце концов опирается на неувядающие "Численные рецепты" Пресса и компании. Ну, вот это, например:
http://www.dreamincode.net/code/snippet1446.htm

Но потом я подумал, что решить задачу с дискретным набором вероятностей, действительно, можно проще. Решение - см. выше.

Ни там, ни там, как Вы видите, списки не используются. Если Вам хочется пропустить 99 вызовов rand() - крошечный цикл вставляется, как Вы понимаете, элементарно. Правда, есть ли гарантия, что корреляция между вызовами rand() с шагом в 100 окажется меньше, чем между двумя вызовами подряд?..
...
Всем спасибо за беседу. Удачи в профессиональной карьере!
Vago вне форума Ответить с цитированием
Старый 22.12.2022, 16:00   #26
ParanoiS
Новичок
Джуниор
 
Регистрация: 14.12.2017
Сообщений: 4
По умолчанию

хз. я бы так:

1) СОЗДАТЬ последовательность чисел
2) взять последний номер списка и переместить между первыми,
3) взять последний из оставшихся, пеереместить перед последним.
4) в цикле, уменьшать последний номер, выбирать 1 или 0
5) переместить ПОЛОВИНУ чисел в начало или конец, зависит от п.4)
6) каждую ПОЛОВИНУ перемешать по п.2)3)
счётчик 1-0 менять на каждом этапе
...
чТ) далее продолжать. Полная нах псевда

Результат: никакой случайности. НО: нет повторов. Типа, как в плэй-листах типа ПОТплэйера, винАмпа итп... Всё напрочь перемешано, но ничё не повторяется.

ДА... и никакой "нулёвости" случая!!

Есть другой сука путь: брать миллисекунды и ксорить результат. Чтото вроде CRC16? только со значением, выдаваемым таймером за время прохода инструкций.

работает, кста.

можно ещё какой-нть хрени придумать, например, (есть же компы, где не предусмотрено сис таймера) - участок видеопамяти с постоянно меняющимися данными... вот это бл в натуре случайно... Берёшь байт предыдущего (хз как это по научному) - и NOT или \ и XOR с уже запомненным. Такие случаи бывают - охренеть. AES курит по надёжности шифра...
ParanoiS вне форума Ответить с цитированием
Старый 22.12.2022, 19:46   #27
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

им 11 лет уже не до этого
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вероятность выпадения в процентах ololo-schoolboy Общие вопросы C/C++ 6 25.01.2011 20:54
вывод рандомного числа с большей или меньшей вероятностью unbanned Паскаль, Turbo Pascal, PascalABC.NET 6 19.01.2011 07:04
Алгоритмы. Работа с вероятностью. anton_kovalev Помощь студентам 2 21.01.2010 10:27
Подпрограмма определяющая вероятность выпадения счастливого билетика. Doublefaced Помощь студентам 9 05.08.2009 15:00
Делфи(Консоль) и C# - Подпрограммы(Вероятность выпадения «счастливого билетика» ) Doublefaced Помощь студентам 3 30.06.2009 22:15