zoukankan      html  css  js  c++  java
  • 利用线性公式,得到随机数

    一.设计思想

    1.公式中的各项数值,其中取得mod尽可能大

    2.输入要进行计算的数值长度

    3.输入一个种子

    4.校验数值

    5.调用函数,用一个变量来存储之前产生的随机数,用另一个来存储现在的随机数,循环num次

    6.输出结果

    二.程序流程图

    三.源程序代码

     1 package class4;
     2 
     3 import java.util.Scanner;
     4 
     5 public class RandomTest {
     6 
     7     public static void main(String[] args) 
     8     {
     9         Scanner in = new Scanner(System.in);
    10         
    11         //显示公式
    12         System.out.println("****************************************");
    13         System.out.println("
    利用公式:Xn+1 = (a*Xn+c)%m,得到随机数!
    ");
    14         System.out.println("****************************************");
    15         
    16         //对各项系数赋值
    17         int a = 10;
    18         int c = 0;
    19         int m = (int) ((Math.pow(2,27)-1));
    20         
    21         //对公式的数值进行输入
    22         System.out.print("请输入要产生随机数的个数:");
    23         int num = in.nextInt();
    24         
    25         System.out.print("请输入要产生随机数的初始值:");
    26         int value = in.nextInt();
    27         
    28         //校验数值
    29         if(num<0||value<0)
    30         {
    31             System.out.print("输入错误,不能输入负值!");
    32             System.exit(1);
    33         }
    34         
    35         //调用函数,产生并输出随机数
    36         generatingRandomNumbers(a,c,m,num,value);
    37         
    38         in.close();
    39         
    40     }
    41     
    42     //用于产生随机数的函数
    43     private static void generatingRandomNumbers(int a,int c,int m,int num,int value)
    44     {
    45         int thePrevious = value;        //定义此变量用来记录上一个随机数,方便公式计算
    46         int random;                        //产生的随机数    
    47         int[] test = new int[num];        //定义一个数组,用来存贮产生的随机数,方便测验
    48         int record = 0;                    //用来记录重复了多少次
    49         
    50         for(int i = 0;i<num;i++)
    51         {
    52             random =  (a*thePrevious+c)%m;
    53             test[i] = random;
    54             System.out.println("第"+(i+1)+"个随机数是:  "+random);
    55             thePrevious = random;
    56         }
    57         
    58         //测验是否重复(不能判断有多少个)
    59         for(int i = 0;i<num;i++)
    60         {
    61             for(int j = (i+1);j<num;j++)
    62             {
    63                 if(test[i]==test[j])
    64                 {
    65                     record++;
    66                 }
    67             }
    68         }
    69         if(record == 0)
    70             System.out.println("没重复啦!");
    71         else
    72             System.out.println("重复"+record+"个啦!");
    73     }
    74     
    75     
    76     
    77 
    78 }

    四.结果截图

  • 相关阅读:
    web自动化学习1--环境搭建以及web初识
    python接口自动化之openpyxl学习
    python接口自动化之requests学习
    接口自动化面试
    面试基础-linux
    git的使用
    php_PDO的事务处理和异常处理
    PHP_PDO简单操作
    PHP_MySql扩展主要操作
    Linux_使用yum快速安装、配置amp环境
  • 原文地址:https://www.cnblogs.com/tianxiayoujiu/p/7659932.html
Copyright © 2011-2022 走看看