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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Генератор случайных чисел - C++

03.09.2013, 11:19. Просмотров 2459. Ответов 22
Метки нет (Все метки)

Здорова господа!

Нужно написать свой собственный генератор случайных чисел, такой же примерно как rand.

От примерно написал кое что, с книги код выдрал, это нормальное распределение случайных чисел в пределах от 0 до 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    map<int,int> m;
    
    unsigned long seed=0;
    long n=10; //от 0 до 9
    for(int i=0;i<1000000;i++)
    {
        seed=seed*1103515245+12345;//получаем случайное число
        long k=seed;
        double fd=(k&0x7fffffff)/2147483648.0;
        long rez=n*fd;
        if(rez==n) rez--;
    //  cout <<rez<<' ';
        m[rez]++;
    }
    cout <<endl;
 
    //проверка распределения
    for(int i=0;i<10;i++)
        cout <<i<<' '<<m[i]<<endl;
и тут от не понятно отето от k&0x7fffffff, что здесь происходит? что это за число 0x7fffffff??? это long число громадно, так что значит просто так его нельзя записать, нужно только знаками или в шестнадцатеричном виде? В книге написано что это выражение делает доступними 31 бит из 32 токо как?
и что это за long тип? unsigned это ясно это без знаковый тип, только положительные числа, а от long это чтоль большие знаковые числа чтоли?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2013, 11:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генератор случайных чисел (C++):

Генератор случайных чисел - C++
Добрый вечер! Собственно-то тако задание: необходимо правильно задать параметры для ЛКГ и написать функцию, возвращающую случайные числа,...

Генератор случайных чисел - C++
Еще ни разу не использовал rand(), знаю что перед ним нужно srand(time(NULL)), потому как без этого числа будут одинаковы постоянно. Но не...

Генератор случайных чисел (с UI) - C++
Я создал простенький генератор случайных чисел с Пользовательским Интерфейсом (GUI). Добавлено через 21 минуту Актуальна :)

Генератор случайных чисел - C++
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;ctime&gt; char randSym() { ...

Генератор случайных чисел - C++
Есть функция, генерирующая случайные целые числа с помощью линейного конгруэнтного метода. Нужно сделать частотный побитовый тест для...

Генератор случайных чисел - C++
Вот написал программу, которая генерирует матрицу 9*9. В каждой строке - от 1 до 9, не повторяются В каждом стобце - то же самое. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
03.09.2013, 16:07 #16
Раз уж тема пошла о самодельных рандомах, то что скажете о таком варианте:
C++
1
2
3
4
5
6
7
8
static unsigned int NachZnach_0 = 2147483647;
int rand_t(){
    int s;
    int *point = &s;
    s = *point;
    NachZnach_0 = (((NachZnach_0  - s + clock()) * 214013 + 2531011) % 2147483647);
    return NachZnach_0;
};
Основная идея - заложить хоть какую-то рандомность, зависящую от случайного значения в памяти и времени работы программы.
1
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,061
Завершенные тесты: 1
03.09.2013, 16:20 #17
Цитата Сообщение от Бендерродригез Посмотреть сообщение
static unsigned int NachZnach_0 = 2147483647;
int rand_t(){
int s;
int *point = &s;
s = *point;
NachZnach_0 = (((NachZnach_0 *- s + clock()) * 214013 + 2531011) % 2147483647);
return NachZnach_0;
};
Интересная задумка

C++
1
2
3
int s;
 int *point = &s;
 s = *point;
зачем все это когда можно просто (int)&s
0
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
03.09.2013, 16:31 #18
Цитата Сообщение от Raali Посмотреть сообщение
C++
1
2
3
int s;
 int *point = &s;
 s = *point;
зачем все это когда можно просто (int)&s
Приводится к int адрес s? Я же использую значение в памяти.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
03.09.2013, 16:32 #19
C++
1
2
3
    int s;
    int *point = &s;
    s = *point;
Значение s будет случайным (точнее в нем будет мусор конечно же).
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
03.09.2013, 16:34 #20
Вот это
C++
1
2
    int *point = &s;
    s = *point;
вообще лишено смысла, это тоже самое, что написать
C++
1
    s = s;
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.09.2013, 16:35  [ТС] #21
Цитата Сообщение от Герц Посмотреть сообщение
Окей, знаток, покажи нам как объявить указатель на метод класса, а затем вызвать его по этому указателю.
Я понял что ты имеешь в веду, но я так сделать сходу не могу, нужно синтаксис смотреть.
Цитата Сообщение от Kastaneda Посмотреть сообщение
Так то оно так, только у С++ такооой богатый синтаксис, что никогда нельзя быть уверенным, что знаешь С++ полностью.
Конечно полностью в настоящий момент все нельзя знать, потому что что то забывается. От ознакомится со всем можно, а уже в процессе работы опыт накопится и детали языка усвоятся. Это все со временем с практикой придет. Мне аж не верится долгие мучения заканчиваются, да я уже заметил щас задачки пошли такие которые я большинство уже решал, там класс Matrix создать или там класс Fort_array, как бы повторение легко их щелкаю. Аж не верится что отмучился .
0
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
03.09.2013, 16:36 #22
Цитата Сообщение от Kastaneda Посмотреть сообщение
Вот это
C++
1
2
    int *point = &s;
    s = *point;
вообще лишено смысла, это тоже самое, что написать
C++
1
    s = s;
Собственно, это оно и есть. Только если я попытаюсь использовать s сразу после объявления, то компилятор сообщит об использовании неинициированной переменной.
0
0x10
03.09.2013, 17:46     Генератор случайных чисел
  #23

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
Аж не верится что отмучился
Ты еще даже не начал.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 17:46
Привет! Вот еще темы с ответами:

Генератор случайных чисел - C++
Всем привет, вот такая задачка. &quot;Датчики случайных чисел можно привлекать при подборе проверочных исходных данных для программ. а) 25...

Генератор случайных чисел - C++
Как написать генератор случайных (пусть и псевдо) чисел, выдающий на выходе целые случайные числа от 1 до 10 и в кол-ве 10-и и без...

генератор случайных чисел - C++
как реализовать генератор случайных чисел? чтобы можно было вводить два числа(например 56 и 519), и случайное число генерировалось из...

Генератор случайных чисел - C++
Здравствуйте, написал вот такой генератор псевдослучайных чисел в диапазоне 0-99 и задался вопросом о его скорости. Я считываю время...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.09.2013, 17:46
Ответ Создать тему
Опции темы

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