Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

Случайные(псевдослучайные) числа - C++

08.08.2012, 17:12. Просмотров 1118. Ответов 5
Метки нет (Все метки)

Здравствуйте! Я знаю, что было много тем по поводу рандомных чисел в С++.Но всё же.

Возникла у меня проблема с получением большого кол-ва случайных(точнее псвдослучайных) чисел, которые меньше 10.Я прекрасно знаю про функцию rand() % 10, и знаю то, что ПЕРЕД ней надо юзать функцию srand().Но вот в чём прикол.Я всегда юзал srand(time(NULL)) в паре с rand() % 10, но при генерации более 1 числа эта фигня выдаёт одинаковые числа.Это всё из-за того, что time(NULL) возвращает какое-то там время в секундах, а оно при выполнении программы не меняется(прога работает оч быстро).Я попытался избежать этого, юзая srand(clock()).Это время измеряемое процессором в тактах от начала выполнения программы.Но блин, чё за фигня - и это время у меня чего то меняется как то малое кол-во раз.При получении 100 рандомных чисел все числа одинаковые.Но уже при получении чисел в кол-ве более 1000 уже видно не одно значение чисел, а 2.

Подскажите, почему так происходит.И подскажите метод получения псевдослучайных чисел такой, чтобы эти числа генерились постоянно разные, а не как у меня.

Вот код, на котором производятся тесты:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <iostream>
#include <ctime>
 
using namespace std;
int a[10];
int main()
{
    int sot,eot,tempa;
    int n;
    for(n=0;n<10;n++)
    {
        srand(clock());
        a[n]=rand() % 10;
    }
    for(int i = 0; i < n; i++)
    {
        cout<<a[i]<<" ";
    } 
    system("pause");
}
заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2012, 17:12     Случайные(псевдослучайные) числа
Посмотрите здесь:

Случайные или псевдослучайные числа? - C++
можно ли считать, такие числа случайными, если не знать какие операции и их последовательность производилось с переменной number? void...

Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа - C++
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); int n; // кол-во элементов массива ...

Случайные числа от -8 к 8 - C++
Как можно сделать рандомом числа от -8 к 8, нашел на форуме пример: int r=(rand() % 11) + 5;//от 0 до 10 и +5, то есть от 5 до 15 но...

Случайные числа - C++
int main() { srand(time(0)); int a = rand()%100; cout &lt;&lt; a &lt;&lt; endl; system(&quot;pause&quot;); } Есть вот такой способ задания...

Случайные числа - C++
Написать генератор псевдослучайных чисел по алгоритму f(n) = f(n-1) + f(n-2) + f(n-3) ( f0 = f1 = f2 = 1) r = fn mod 211. ( 0 - 210) ...

Случайные числа - C++
Всем доброго времени суток, я чёт туплю, подскажите, как посчитать сколько чисел сгенерированных случайным образом в диапазоне попадают в...

Случайные числа - C++
Необходимо написать программу, которая будет генерировать случайную величину от 0 до 1 (включая 0 и 1), в результаты должны быть дробные...

Случайные числа - C++
как выполнить генератор случайных чисел генерировал любое число и присваивал число переменной

Случайные числа - C++
Можно ли генерировать случайные числа типа float с помощью rand()?

случайные числа в с++ - C++
День добрый . Задание : игра в кубики с компом . Не могу понять как сделать для компа и человека действительно разные числа . Делал через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.08.2012, 17:19     Случайные(псевдослучайные) числа #2
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
srand(clock());
вынеси из цикла
ZaMaZaN4iK
Мой лучший друг-отладчик!
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
08.08.2012, 17:21  [ТС]     Случайные(псевдослучайные) числа #3
Спасибо, помогло.Скажи пожалуйста, а почему в цикле нельзя?Я что-то не понимаю...
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
08.08.2012, 17:22     Случайные(псевдослучайные) числа #4
ZaMaZaN4iK, видите ли, функция srand выполняет "инициализацию" генератора случайных чисел. То есть ее нужно вызывать однократно. Как правило это делается в самом начале программы.
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.08.2012, 17:26     Случайные(псевдослучайные) числа #5
генерируются же псевдослучайные(!) числа,для их генерации нужно какое-то число,от которого мы отталкиваемся,если можно так сказать,вот один раз и задаём такое число
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.08.2012, 18:44     Случайные(псевдослучайные) числа #6
Цитата Сообщение от alexey31415 Посмотреть сообщение
генерируются же псевдослучайные(!) числа,для их генерации нужно какое-то число,от которого мы отталкиваемся,если можно так сказать,вот один раз и задаём такое число
собственно да, в сишном генераторе как правило используется линейный конгруэнтный метод. Для него нужно некоторое начало отсчета
переинициализировать генератор в процессе работы - не очень осмысленная идея
Yandex
Объявления
08.08.2012, 18:44     Случайные(псевдослучайные) числа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru