Подскажите нормальную функцию генерации случайных чисел на C++
Например:
srand(time(NULL));
int k=rand()%Maximum;
при вызове несколько наз вподряд за раз возвращает одно и то же число
не угонишся за вами, пока пояснял уже ответов неверных понаписали =)
Пля. Я тупой! Всем спасибо, проблема почти решена.
Спасибо Павлу за: "srand вызывется только один раз в начале программы!!! " как я уже сказал я видимо тупой =)
Проблема только осталась в том что это юзается в плагине, функции которого вызаваются только по требованию (инициализация как таковая отсутствует) , так что я хз куда ещё уткнуть srand.
srand(time(NULL));
int k = rand() % 101+ 50
Выдаст ПСЕВДОслучайное значение из диапазона 50-100
srand вызывается только один раз в начале программы!! !
Можешь попробовать сделать
srand( GetTickCount() + rand() );
В этом случае функция может вызываться каждую милисекунду. Если нужно чаще, то вариант не подойдет.
А что, Вы знаете ненормальную функцию генерации случайных чисел на C++?
Так зачем при каждом вызове генератора его инициализировать одним и тем же числом? Во-первых то время не очень быстро меняется! , а во-вторых даже при изменении у Вас не получатся случайные числа. srand надо делать один раз в начале программы!
#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;
}
rand(), естественно. только рандомизатор инициировать не забудь.