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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
20.12.2010, 20:24     Генератор псевдослучайных чисел #1
Написать генератор псевдослучайных чисел по алгоритму r = r * 4231 + 123457;
Подсчитать частоты попадания в каждый из интервалов длиной 10000 при выборке 500000.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
агерон
 Аватар для агерон
265 / 264 / 33
Регистрация: 12.10.2009
Сообщений: 1,030
20.12.2010, 21:13     Генератор псевдослучайных чисел #2
так как твой генератор чисел работает только с целыми числами то если брать за множество генерируемых чисел множество от 0 до 4294967296 (4294967296 максимально доступное целое число в языке программирования С) и длину выборки равную 500000 то количество 10000 интервалов будет равно 429496,7296 штук или по правилу округления 429497 штук учитывая близость чисел с увереностью в 99,999% можно предположить что в каждом интервале выпадет всего по 1 числу а значит частота попадания в любой из 10000 интервалов (с вероятностью 99,999%) будет равна 1/500000 или 0,000002
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
22.12.2010, 00:41  [ТС]     Генератор псевдослучайных чисел #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef RAND_H_INCLUDED
#define RAND_H_INCLUDED
 
#include <stddef.h>
 
void mysrand(size_t seed);
size_t myrand();
 
#endif // RAND_H_INCLUDED
 
#include "rand.h"
 
static size_t _seed = 1;
 
void mysrand(size_t seed)
{
    _seed = seed;
}
 
size_t myrand()
{
    static const size_t magic_number1 = 4231;
    static const size_t magic_number2 = 123457;
    _seed = _seed * magic_number1 + magic_number2;
    return _seed;
}
как то так?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef RAND_H_INCLUDED
#define RAND_H_INCLUDED
 
#include <stddef.h>
 
void mysrand(size_t seed);
size_t myrand();
 
#endif // RAND_H_INCLUDED
#include "rand.h"
 
static size_t _seed = 1;
 
void mysrand(size_t seed)
{
    _seed = seed;
}
 
size_t myrand()
{
    static const size_t magic_number1 = 4231;
    static const size_t magic_number2 = 123457;
    _seed = _seed * magic_number1 + magic_number2;
    return _seed;
}
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
24.12.2010, 16:00  [ТС]     Генератор псевдослучайных чисел #4
UP =//
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.12.2010, 05:12     Генератор псевдослучайных чисел #5
Цитата Сообщение от Оленька* Посмотреть сообщение
как то так?
Да, так, только нужно учесть, что генератор разбит на два файла: файл myrand.h, который определяет интерфейс функций mysrand и myrand и файл myrand.c, в котором определяется реализация этих функций.
Файл myrand.h:
C
1
2
3
4
5
6
7
8
9
#ifndef RAND_H_INCLUDED
#define RAND_H_INCLUDED
 
#include <stddef.h>
 
void mysrand(size_t seed);
size_t myrand();
 
#endif // RAND_H_INCLUDED
Файл myrand.c:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "myrand.h"
 
static size_t _seed = 1;
 
void mysrand(size_t seed)
{
    _seed = seed;
}
 
size_t myrand()
{
    static const size_t magic_number1 = 4231;
    static const size_t magic_number2 = 123457;
    _seed = _seed * magic_number1 + magic_number2;
    return _seed;
}
Если что-нибудь еще непонятно, то спрашивай, пожалуйста, в этой теме
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2010, 06:47     Генератор псевдослучайных чисел #6
Цитата Сообщение от агерон Посмотреть сообщение
частота попадания в любой из 10000 интервалов (с вероятностью 99,999%) будет равна 1/500000 или 0,000002
Частоту не надо путать с вероятностью.
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
30.12.2010, 08:54  [ТС]     Генератор псевдослучайных чисел #7
А как будет выглядить программа на Си просто
VtaMC
Просто Веталь
 Аватар для VtaMC
159 / 99 / 5
Регистрация: 11.05.2009
Сообщений: 628
30.12.2010, 09:04     Генератор псевдослучайных чисел #8
http://www.cyberforum.ru/cpp-beginners/thread44753.html
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
30.12.2010, 14:29     Генератор псевдослучайных чисел #9
Цитата Сообщение от Оленька* Посмотреть сообщение
А как будет выглядить программа на Си просто
Тебе нужен пример использования вышеопределенных функций?
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
02.01.2011, 12:08  [ТС]     Генератор псевдослучайных чисел #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void main (void)
{
int i=0; int n; int r=0; int t; int j;
n=r*4231 + 123457;
for(;;r++)
{
r=r*4231 + 123457;
i++; j++;
if((n==r)&&(i<10000)
t++;
else
if(i==10000)
i=0;
 
if(j==500000)
break;
}
printf("%i",&t);
}

Вот так ,правильно?
P.S.(посто я пишу лабораторные и все програмы должны быть с использованием только одной библиотеки <stdio.h>)
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.01.2011, 21:11     Генератор псевдослучайных чисел #11
Оленька*, мы уже написали функцию для генерации случайных чисел, поэтому лучше бы использовать ее, примерно так:
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "mysrand.h>
 
int main()
{
    mysrand((size_t) time(NULL));
    printf("Random integer = %u\n", myrand());
    exit(0);
}
А насчет того, что "все програмы должны быть с использованием только одной библиотеки <stdio.h>" - для генерации случайных чисел мы вообще ничего не используем.
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
09.01.2011, 14:28  [ТС]     Генератор псевдослучайных чисел #12
Nameless One, можете пожалуйста помочь написать саму программу.

Только помоему если я не ошибаюсь там вместо "#include "mysrand.h>" должна быть "<conio.h>"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2011, 14:32     Генератор псевдослучайных чисел
Еще ссылки по теме:

Генератор псевдослучайных чисел (иллюзия?) C++
Генератор псевдослучайных чисел C++
Генератор псевдослучайных чисел C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.01.2011, 14:32     Генератор псевдослучайных чисел #13
Цитата Сообщение от Оленька* Посмотреть сообщение
Nameless One, можете пожалуйста помочь написать саму программу.
В смысле написать? Генератор тебе уже написали (и вроде бы даже это был я)
Цитата Сообщение от Оленька* Посмотреть сообщение
Только помоему если я не ошибаюсь там вместо "#include "mysrand.h>" должна быть "<conio.h>"
Неа, не должна
Yandex
Объявления
09.01.2011, 14:32     Генератор псевдослучайных чисел
Ответ Создать тему
Опции темы

Текущее время: 00:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru