Top.Mail.Ru
Ответы

Подскажите нормальную функцию генерации случайных чисел на C++

Дополнен

Например:
srand(time(NULL));
int k=rand()%Maximum;
при вызове несколько наз вподряд за раз возвращает одно и то же число

Дополнен

не угонишся за вами, пока пояснял уже ответов неверных понаписали =)

Дополнен

Пля. Я тупой! Всем спасибо, проблема почти решена.
Спасибо Павлу за: "srand вызывется только один раз в начале программы!!! " как я уже сказал я видимо тупой =)
Проблема только осталась в том что это юзается в плагине, функции которого вызаваются только по требованию (инициализация как таковая отсутствует) , так что я хз куда ещё уткнуть srand.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
13лет

srand(time(NULL));
int k = rand() % 101+ 50

Выдаст ПСЕВДОслучайное значение из диапазона 50-100
srand вызывается только один раз в начале программы!! !

Можешь попробовать сделать

srand( GetTickCount() + rand() );
В этом случае функция может вызываться каждую милисекунду. Если нужно чаще, то вариант не подойдет.

Аватар пользователя
Гений
13лет

А что, Вы знаете ненормальную функцию генерации случайных чисел на C++?

Так зачем при каждом вызове генератора его инициализировать одним и тем же числом? Во-первых то время не очень быстро меняется! , а во-вторых даже при изменении у Вас не получатся случайные числа. srand надо делать один раз в начале программы!

Аватар пользователя
Мастер
13лет

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;

int main()
{
cout << "10 random numbers (1..100): " << endl;
srand(time(NULL));
for(int i=0;i<10;i++) cout << rand() % 100 + 1 << " ";
cin.get();
return 0;
}

Аватар пользователя
Просветленный
13лет

rand(), естественно. только рандомизатор инициировать не забудь.