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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 5.00
Оленька*
2 / 2 / 0
Регистрация: 15.12.2010
Сообщений: 58
#1

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

20.12.2010, 20:24. Просмотров 2259. Ответов 12
Метки нет (Все метки)

Написать генератор псевдослучайных чисел по алгоритму r = r * 4231 + 123457;
Подсчитать частоты попадания в каждый из интервалов длиной 10000 при выборке 500000.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 20:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Генератор псевдослучайных чисел (C++):

Генератор псевдослучайных чисел - C++
Данный генератор работает по конгруэнтному методу, формула X_{n} = ( a X_{n-1}^3 + b X_{n-1}^2 + c X_{n-1} + d )\mod 2^e. При...

Генератор псевдослучайных чисел - C++
Всем привет. Как такое "чудо" пишеться, примерный алгоритм, если можно на псевдокоде: Написать генератор псевдослучайных чисел по...

Генератор псевдослучайных чисел. - C++
Здраствуйте. Мне нужно сделать вот что "Написать генератор псевдослучайных чисел по алгоритму r = r * 4231 + 123457; Подсчитать частоты...

Генератор псевдослучайных чисел - C++
Народ, помогите плиз с решением этой задачи. Мне надо управляемый генератор равновесных псевдослучайных парных наборов.. Вот просто...

генератор псевдослучайных чисел... - C++
Вот програмулька генерирующая псевдослучайные числа создавалась по алгоритму X(n+1)=a*X(n)+c*(mod M) кто может подсказать как выводить...

Генератор псевдослучайных чисел. - C++
Написать генератор псевдослучайных чисел по алгоритму r = r * 4231 + 123457; Подсчитать частоты попадания в каждый из интервалов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
агерон
268 / 267 / 33
Регистрация: 12.10.2009
Сообщений: 1,060
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
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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
Ушёл с форума.
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
Просто Веталь
160 / 100 / 5
Регистрация: 11.05.2009
Сообщений: 628
30.12.2010, 09:04 #8
http://www.cyberforum.ru/cpp-beginners/thread44753.html
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
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>"
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
09.01.2011, 14:32 #13
Цитата Сообщение от Оленька* Посмотреть сообщение
Nameless One, можете пожалуйста помочь написать саму программу.
В смысле написать? Генератор тебе уже написали (и вроде бы даже это был я)
Цитата Сообщение от Оленька* Посмотреть сообщение
Только помоему если я не ошибаюсь там вместо "#include "mysrand.h>" должна быть "<conio.h>"
Неа, не должна
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2011, 14:32
Привет! Вот еще темы с ответами:

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

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

Массивы,генератор псевдослучайных чисел. - C++
Всем привет,помогите разобраться с 2 задачами. 1) Дана последовательность из n вещественных чисел. Найти наиболее длинную...

генератор псевдослучайных чисел без рандом.... - C++
народ может кто знает как сделать такой генератор без использования функций rand,srand,URandom,randomize.....


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

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

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