- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
int randomize(int Min, int Max)
{
qsrand(QTime::currentTime().msec());
if (Min > Max)
{
int Temp = Min;
Min = Max;
Max = Temp;
}
return ((qrand()%(Max-Min+1))+Min);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+24
int randomize(int Min, int Max)
{
qsrand(QTime::currentTime().msec());
if (Min > Max)
{
int Temp = Min;
Min = Max;
Max = Temp;
}
return ((qrand()%(Max-Min+1))+Min);
}
Всё хорошо?
neeedle 29.05.2013 13:17 # +1
Ыыы
bormand 29.05.2013 13:45 # +6
2) Обмен min и max - защита от дурака, который не осилил доку к функции?
3) Какой нахер randomize? Это ж генерация рандомной точки на отрезке... Если хочется назвать это рандомайзом - убирайте строки 4-10.
В остальном сойдет.
defecate-plusplus 29.05.2013 13:53 # +6
roman-kashitsyn 29.05.2013 14:00 # +2
bormand 29.05.2013 14:03 # +2
inkanus-gray 29.05.2013 15:32 # 0
inkanus-gray 29.05.2013 22:08 # +1
TarasB 29.05.2013 15:37 # 0
В стиле Турбопаса это было бы так:
int(((long long)(qrand()) * (long long)(max-min+1))>>32)
(вменяемый компилятор это превратит в одно умножение и возврат edx)
а остатки по модулю они для многих генераторов зацикливаются
и ещё умножать быстрее чем делить
defecate-plusplus 29.05.2013 15:44 # +2
предположим, что qrand() вернул 30
твоя формула вернет значение в пределах [10, 20) ?
TarasB 29.05.2013 16:33 # +1
Я обсуждаю именно способ масштибирования числа, равномерно распределённого по очень большому отрезку, на число, равномерно распределённое по короткому отрезку.
LispGovno 29.05.2013 16:56 # +1
bormand 29.05.2013 17:01 # +1
LispGovno 29.05.2013 20:39 # 0
bormand 29.05.2013 20:45 # +2
LispGovno 29.05.2013 20:54 # +2
bormand 29.05.2013 20:57 # +1
P.S. Да и у тебя оно тоже есть ;)
LispGovno 29.05.2013 21:15 # 0
> Если бы RAND_MAX
Мечтать не вредно. В qt что-то другое придумали? Если и придумали, то явно в сторону ухудшения генератора и гибкости от версии к версии.
3.14159265 29.05.2013 17:04 # +2
>(вменяемый компилятор это превратит в одно умножение и возврат edx)
Какой вообще смысл в "высокоуровневой" сишке, если на асме оно и короче и понятней?