不等概率产生随机数产生

获得0--n之内的不等概率随机整数,0概率最大,1次之,以此递减,n最小 

  1. private static int getAnyRandInt(int n){  
  2.     int max n+1;  
  3.     int bigend ((1+max)*max)/2;  
  4.     Random rd new Random();  
  5.     int Math.abs(rd.nextInt()%bigend);  
  6.     int sum 0;  
  7.     for(int 0; i
  8.         sum += (max i);  
  9.         if(sum>x){  
  10.             return i;  
  11.          
  12.      
  13.     return -1;  
  14.  

等概率随机数与不等概率随机数

  • public class RandomTest  
  •  public static void main(String[] args){  
  •   Random ran1 new Random();  
  •   Random ran2 new Random(12345);  
  •     
  •   System.out.println("The 1st set of random numbers:");  
  •   System.out.println("Integer:"+ran1.nextInt());  
  •   System.out.println("Long:"+ran1.nextLong());  
  •   System.out.println("Float:"+ran1.nextFloat());  
  •   System.out.println("Double:"+ran1.nextDouble());  
  •     
  •   System.out.println("The 2nd set of random numbers:");  
  •   for(int 0; i<</span>20; i++){  
  •    if(i%5 == 0){  
  •     System.out.println();  
  •     
  •    System.out.print(ran2.nextInt()+ ");  
  •    
  •     
  •   int[] rate new int[10];  
  •   System.out.println();  
  •   int 0;  
  •   for(int 0; i<</span>200; i++){  
  •    if(i%40 == 0){  
  •     System.out.println();  
  •     
  •    getRandInt(10);  
  •    rate[n]++;  
  •    System.out.print(n+ ");  
  •    
  •     
  •   displayRandRate(rate, "getRandInt等概率随机数0--9依次出现次数:");  
  •     
  •   Arrays.fill(rate, 0);  
  •   for(int 0; i<</span>200; i++){  
  •    if(i%40 == 0){  
  •     System.out.println();  
  •     
  •    getAnyRandInt(9);  
  •    rate[n]++;  
  •    System.out.print(n+ ");  
  •    
  •     
  •   displayRandRate(rate, "getAnyRandInt不等概率随机数0--9依次出现次数:");  
  •   
  •    
  •  //获得0--max-1之内的等概率随机整数  
  •  private static int getRandInt(int max){  
  •   Random rd new Random();  
  •   return Math.abs(rd.nextInt()%max);  
  •   
  •    
  •  //获得0--n之内的不等概率随机整数,0概率最大,1次之,以此递减,n最小  
  •  private static int getAnyRandInt(int n){  
  •   int max n+1;  
  •   int bigend ((1+max)*max)/2;  
  •   Random rd new Random();  
  •   int Math.abs(rd.nextInt()%bigend);  
  •   int sum 0;  
  •   for(int 0; i
  •    sum += (max i);  
  •    if(sum>x){  
  •     return i;  
  •     
  •    
  •   return -1;  
  •   
  •    
  •  private static void displayRandRate(int rate[], String description){  
  •   System.out.println();  
  •   System.out.println();  
  •   System.out.println(description);  
  •   for(int 0; i
  •    System.out.print(rate[i]+ ");  
  •    
  •   System.out.println();  
  •   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值