Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import array
- m=pow(2,31)-1 #модуль
- a=4096 #
- a1=4096 #
- d=4096 #
- c=150889 #не 0, иначе - мультипликативный
- X0=57956 #
- k=0.1 #вероятность попадания в категорию
- count=int(input("Сколько случайных чисел нужно? "))
- massiv=array.array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
- for n in range (0,15):
- if X0 > 10:
- massiv[n]=int(X0%10) #разбиение на разряды
- else:
- massiv[n]=X0
- break
- X0=int(X0/10)
- massivA=array.array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
- massivXn=array.array('q', [0])
- for w in range (0,15):
- if a > 10:
- massivA[w]=int(a%10) #разбиение на разряды
- else:
- massivA[w]=a
- break
- a=int(a/10)
- def multiply (x, a):
- sum = 0
- for i in range (0,15):
- for j in range (0,15):
- sum=sum+x[i]*a[j]*pow(10,i+j) #перемножение X0 и a
- return sum
- counters=array.array('i', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
- for l in range (0, count-1):
- Xn=(d*multiply(massiv,massiv)+multiply(massiv,massivA)+c)%m #Xn=d*X0^2+a*X0+c(mod m)
- print (Xn/pow(2,31))
- cellnumber = 0;
- for cc in range(1,10):
- if (Xn/pow(2,31)) > cc/10:
- cellnumber = cellnumber+1; #переход к ячейке номер cc
- else:
- break
- counters[cellnumber] = counters[cellnumber] + 1 #увеличение счётчика попаданий в категорию
- for n in range (0,15):
- if Xn > 10:
- massiv[n]=int(Xn%10)
- else:
- massiv[n]=Xn
- break
- Xn=int(Xn/10)
- print(counters)
- sum = 0
- for j in range (1, 11):
- sum = sum + (pow(counters[j-1],2))/k
- print("Сумма равна ", sum)
- hi = sum/count - count #формула для расчёта хи-квадрат
- print("Хи-квадрат для этого распределения равно ",hi)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement