随机生成一个n bit位的长整数。
函数签名如下
long createRndInteger(int n)
思路是先确定输入n位数的取值范围,然后用Math.pow()函数确定最小值,求最大值则是利用二进制和十进制的转换取得,最后利用java中的函数取得最终的值具体代码如下:
package com.wwz.c2;
import java.util.Random;
import java.util.Scanner;
public class Ctwo {
/**
* @author ZHANGweiwei
* 随机生成n bit位的整数
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
long value=createRndInteger(n);
System.out.println(value);
}
public static long createRndInteger(int n){
int min=(int)Math.pow(2, n-1);//生成二进制能表示的最小的值
int max=0;
for(int i=0;i<n;i++){
max+=Math.pow(2, i);
}
//随机生成min-max之间的数
Random random=new Random();
int num=random.nextInt(max-min+1)+min;
return num;
}
}