• 2.动手动脑


    一.动手动脑

    问题:利用同余法产生不重复的随机数。

    设计思路:根据同余法产生随机数线性同余算法有m 、a 、c 和X0 4个参数,通过置Xn  ≡aXn + c (mod m) ,求得随机数序列< Xn > , 这个序列称作线性同余序列。m、a 、c 和X0 分别称做模数、乘数、增量和初始值。从代码中设置m,a,c的值,在从键盘输入随机种子X0,再利用for循环产生n个随机数。

    程序流程图:

     

    程序源代码:

    package tourial2;

    import java.util.Scanner;

    public class random {

    public static void main(String[] args) {

    //输入参数;

    int j=2;

    int m=(int) (Math.pow(2, 27)-1);

    int a=12;

    int c=0;

    System.out.println("请输入产生的随机数的数量:");

    Scanner input=new Scanner (System.in);

    int n=input.nextInt();

    //开辟输入大小的数组;

    int b[];

    b=new int[n];

    System.out.println("请输入随机数的种子:");

    //输入随机数的种子;

    b[0]=input.nextInt();

    System.out.println("1个随机数: "+b[0]);

    for(int i=0;i<n-1;i++)

    {

    b[i+1]=(b[i]*a+c)%m;

    System.out.print(""+j+"个随机数:");

    System.out.println(b[i+1]);

    j++;

    }

    }

    }

    程序截图:

     

     

  • 相关阅读:
    九连环
    Fruit Ninja(取随机数)
    Distinct Values(贪心)
    Harvest of Apples
    Don't Be a Subsequence
    ConvexScore
    守卫
    Trie树
    NOIP 2005 过河
    HDU 4597 Play Game 记忆化DP
  • 原文地址:https://www.cnblogs.com/ljysy/p/7658104.html
Copyright © 2020-2023  润新知