java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?相关的知识,希望对你有一定的参考价值。

java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?
例如 bignumb(100000)可以给出一个100000位的数字,注意是100000位。
可否结合BigInteger 和 Random?

最好有具体代码,谢谢!

一个大数一般都是使用数组存储的。

比如使用byte[],一个byte可以表示0-99,或者使用字符串存储大数.那么,

class BigInteger 
  public byte[] x;
  public String y;
  public BigInteger bignumbX(int len) 
    if(len<=0) return null;
    BigInteger r = new BigInteger();
    r.x = new byte[(len+1)/2]; // 得到需要多少个byte表示大数
    int i = 0; Random rnd = new Random();
    while(len>2) 
      r.x[i++] = rnd.nextInt(100); len-=2;
    
    if(len==1) r.x[i] = rnd.nextInt(9)+1; //1-9, 最高位不为0
    else r.x[i] = rnd.nextInt(90)+10; // 10-99
    return r; // 结果为r.x
  
  public BigInteger bignumbY(int len) 
    if(len<=0) return null;
    BigInteger r = new BigInteger();
    Random rnd = new Random();
    r.y = ""+(rnd.nextInt(9)+1); len--; // 1-9, 最高位不为0
    while(len>0) r.y += rnd.nextInt(10);
    return r; // 结果为r.y
  

处理加减乘除需要自己再写其他函数。

参考技术A 我查了下biginteger的api,有这么一个构造方法:BigInteger(String val),

你可以通过String生成一个大数的字符串,在通过这个字符串来得到一个biginteger对象。
StringBuffer bigstring=new StringBuffer();
int length=10;//自定义的位数
for(int i=0;i<length;i++)
bigstring.append(Random.nextInt(10));

BigInteger big=new BigInteger(temp);
这样就得到一个大数,我的这台机器上没有eclipse,所以代码都是手写的,你自己在机器上调试看看,不要什么都要看被人的具体代码,自己多思考看看。

个人看法,仅供参考!
参考技术B MARK!!!

Java 泛型总结

泛型总结: 

  1.  泛型具有参数化类型的能力.  可以定义使用泛型类型的类或方法, 编译器会用具体类型来替换泛型类型.

  2.  泛型的主要优势是能够在编译时而不是运行时检测错误. 

  3.  泛型类或方法允许指定这类或方法可以带有的对象类型, 如果试图使用带有不兼容对象的类或方法, 编译器或检测出这个错误.

  4.  定义在类, 接口或者静态方法中的泛型称为形式反省类型, 随后可以用一个实际具体类型来替换它. 替换泛型类型的过程称为泛型实例化.

  5. 不使用类型参数的泛型类称为原始类型, 例如ArrayList. 使用原始类型是为了向后兼容Java 较早的版本.

  6. 荣配泛型类型有三种形式: ? , ? extends T , ? super T, 这里的T代表一个泛型类型.  

    1) 第一种形式, ? 称为非受限通配, 它和 ? extends Object 是一样的.  

    2) 第二种形式  ? extends T 称为受限通配, 代表T或者T的一个子类型.

    3) 第三种形式  ? super T  称为下限通配, 表示T或者T的一个父类型.

  7.  使用称为类型消除的方法来实现泛型. 编译器使用泛型类性信息来编译代码, 但是随后消除它. 

     因此泛型信息在运行时是不可用的. 这个方法能够使泛型代码向后兼容使用原始类型的遗留代码.

  8. 不能使用泛型类型参数来创建对象.

  9. 不能使用泛型类型参数来创建数组.

  10. 不能再静态环境中使用累得泛型类型参数

   11. 在异常类中不能使用泛型类型参数.

以上是关于java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?的主要内容,如果未能解决你的问题,请参考以下文章

Java 泛型

Java 泛型总结

(JAVA)啥是实例化如何实现类的实例化(用类或方法创建一个该类的实例)?

Java泛型

可空引用类型:如何指定“T?”类型不限于类或结构

Java指定保留小数位数的方法