Gremlin92
@Gremlin92
Целеустремленный

Датчик ПСП есть вопросы?

Линейный конгруэнтный генератор Лемера 1951
Наиболее популярным для получения псевдослучайных чисел является
метод вычетов по формуле:
U[i+1] = (U[i]*M)mod p = U[i]*M-p*int(U[i]*M/p)

R[i]=U[i]/p,где U[i],M,p-целые числа,0<R[i]<1,1<=U[i]<=p-1.

И само задание:

Исследовать при каких U[0],p,M длина последовательности неповторяющихся чисел будет не менее 10000, при «хороших» стохастических параметрах. Определить влияет ли величина R[0],при M и p=const на статические характеристики датчика. Если влияет, то определить область допустимых величин U[0]. Представить результаты тестирования генератора для оптимальных величин p,M,U[0].

Сообственно буду добавлять сейчас код потихоньку и нужно сделать сами числа R в интеревале от [0,1].
#include <iostream>
#include <vector>
const int M = 302;
const int p = 1003;
const float U0 = 0.5;
const int N = 10000;
std::vector<float> gen(float R0, int m, int p)
{
	std::vector<float> R;
	std::vector<float> U;
	U.push_back(R0);
	for (int i = 0; i < N; i++)
	{
		U.push_back(U.back()/*U[i]*/ * M - p*int(U.back()/*U[i]*/ * M / p));
		float r_ = U[i] / p;
		R.push_back(r_);
		std::cout <<R.back()<<" ";
	}
	return R;
}
int main()
{
	gen(U0,M,p);
	std::cin.ignore();
	return 0;
}

Вопрос 1й как проверить что при длине последовательности N=10000(в принципе не важна длина) нет повторяющихся последовательностей? Что можно использовать? map,pair,set? поясните я слаб в коллекциях?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Вопрос 1й как проверить что при длине последовательности N=10000(в принципе не важна длина) нет повторяющихся последовательностей? Что можно использовать?

Последовательность начнёт повторяться, когда повторится внутреннее состояние генератора. Можно высунуть наружу внутреннее состояние генератора и воспользоваться алгоритмом поиска циклов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 12:05
2000 руб./за проект
28 мар. 2024, в 11:24
5000 руб./за проект