randomfunctiontest.cpp 791 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //对随机数相关算法的时间分布性进行验证
  2. #include<iostream>
  3. //线性同余哈希函数的散布
  4. void line_hash(double n)
  5. {
  6. double result[10]={0};
  7. for(int i=0;i<n;i++)
  8. {
  9. result[((i*52223)+94399)%10]++;
  10. }
  11. double count=0;
  12. for(int i=0;i<10;i++)
  13. {
  14. count+=result[i];
  15. std::cout<<result[i]<<std::endl;
  16. }
  17. for(int i=0;i<10;i++)
  18. {
  19. std::cout<<double(result[i]/count)<<std::endl;
  20. }
  21. }
  22. auto line_hash_text=[]->void{
  23. while(1)
  24. {
  25. std::cout<<"please input n:"<<std::endl;
  26. int n=0;
  27. if(n==-1)
  28. {
  29. break;
  30. }
  31. std::cin>>n;
  32. line_hash(n);
  33. }
  34. };
  35. //测试结果证明线性混合同余有很好的随机性
  36. int main()
  37. {
  38. line_hash_text();
  39. }