Generazione e test numeri casuali

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
def myrandgen(a,c,M,r0,n=1):
	if n==1:
		return mod(a*r0+c,M)
	else:
		r=zeros(n)
		r[0]=r0
		for i in range(1,n):
			r[i]=mod(a*r[i-1]+c,M)
		return r

i=0
sets=((57,1,25,13,'s'), (57,13,4097,13,'sg'), (57,17,4111,13,'sr'))
for a,c,M,r0,p in sets:
	i+=1
	r=myrandgen(a,c,M,r0,1000)
	figure(i)
	plot(r[:-1],r[1:],p)
	xlabel(r'$r_i$',fontsize=25)
	ylabel(r'$r_{i+1}$',fontsize=25)
	title('a='+str(a)+', c='+str(c)+', M='+str(M)+', r0='+str(r0))