как получить случайное число от 1 до 10 - страница 3

 
Petros Shatakhtsyan:


Тут куча безграмотных программистов!


Не слушайте никому. Сделайте так:

В OnInit() напишите:

И в цикле:


P.S.  Очень обидно, что тут пишут также программисты очень низкого уровня.

Уже, вроде как, давно признанный факт и здесь, и везде в интернете, что остаток от деления дает неравномерное распределение.



 

Andrii Djola:
а подскажите плиз как получить случайное число от 5 до 30 например?
int f_GetRand(int min,int max)
  {
   int v=0;
   MathSrand(GetTickCount());
   while(true)
     {
      v=MathRand();
      if(v>=min && v<=max)
         break;
     }
   return(v);
  }
 
Evgeniy Serov:

Очень плохой способ.

 
Dmitry Fedoseev:

Очень плохой способ.

если max-min примерно сопоставимы с RAND_MAX то отличный способ. 
 
Maxim Kuznetsov:
если max-min примерно сопоставимы с RAND_MAX то отличный способ. 

Хоть раз вставала такая задача?

 
Dmitry Fedoseev:

Хоть раз вставала такая задача?

время от времени ( периодически почти всегда) надо генерять random :-)

поэтому такие задачки вставали.. и кстати ошибки в такой мелочовке чертовски дорого стоят

----

если не выходить за рамки стандартного random-генератора [0..RAND_MAX], то повторная генерация числа это неплохой способ. Можно даже сказать наилучший,  распределение величин гарантированно равномерное :-) скорость подхромает, будет нелинейна от (max-min)/(RAND_MAX) но это можно чуть подлечить