从品牌网站建设到网络营销策划,从策略到执行的一站式服务
Pseudorandom Number Generator
我们提供的服务有:成都网站制作、成都做网站、外贸营销网站建设、微信公众号开发、网站优化、网站认证、西工ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的西工网站制作公司Description
伪随机数生成器 (Pseudorandom Number Generator, PRNG) 是用于生成接近于绝对随机数序列的数字序列的算法。一般来说,伪随机数生成器依赖于一个初始值,也称为种子,来生成对应的伪随机数序列。只要种子确定,使用伪随机数生成器生成的随机数就是完全确定的,因此其生成的随机数序列并不是真正随机的。
生成伪随机数的方法非常多,例如,我们可以通过以下方法得到 [0, p - 1] 范围内伪随机整数。
int seed = 初始种子, a = 初始参数, p = 初始参数;
int generate() {
seed = (seed * seed + a) % p;
return seed;
}
换句话说,假设初始参数 seed, a, p 给定,我们生成的随机数序列实际上是
f(seed),f(f(seed)),f(f(f(seed))),⋯
不过,可以注意到,每次生成的随机数由上一个随机数唯一确定,经过一定次数的迭代后,必然会陷入一个循环,我们称这个循环的循环节为这个随机数序列的周期。
现在,给定 seed, a 和 p,你需要计算使用该方法生成的随机数序列的周期。
Input
输入共一行,包含三个整数 seed, a, p(0≤seed,a
Output
输出共一行,包含一个整数,表示生成的随机数序列的周期。
Sample Input 1
1 14 514
Sample Output 1
18
Hint
生成的序列的前 30 项为 15, 239, 81, 407, 155, 395, 297, 329, 315, 37, 355, 109, 73, 203, 103, 343, 471, 321, 255, 275, 81, 407, 155, 395, 297,329, 315, 37, 355, 109。
可以看到,从第三个随机数 8181 开始,之后的序列周期性出现,周期为 1818。
先打出来检索的代码,再来插旗子判断即可:
#includeusing namespace std;
const int N=10000010;
int aa[N],b[N]={},c[N];
int main()
{
long long seed,a,p;
cin >>seed >>a >>p;
aa[1]=seed;
int cnt=0;
for(int i=1;;i++)
{
seed=(seed*seed+a)%p;
aa[i]=seed;
// aa[i+1]=(aa[i]*aa[i]+a)%p;
b[seed]++;
if(b[seed]==2)
{
cnt=i;
break;
}
// cout<
数组要开到范围外,我因为数组不对wa了12发,一直run time error,麻了,悲
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图