【问题标题】:Creating long randoms [closed]创建长随机数[关闭]
【发布时间】:2012-12-28 18:09:53
【问题描述】:

所以我有这个

Random random1 = new Random();
int intrandom1 = random1.Next();

我想在 .Next 之后放一个很长的内容。我怎么做?它只接受整数。

【问题讨论】:

  • 我添加了 Java,但不确定...... OP 的目标是什么
  • @AnoopVaidya Java 的下一个是小写
  • @BeniBela:我不知道方法/功能/过程以大写字母开头的任何语言:(
  • @AnoopVaidya 可能是错字...
  • @BeniBela 在 Java 中是 nextInt()nextLong() 不是下一个或下一个。

标签: c# random long-integer


【解决方案1】:

第一个想法:一个long as 64位整数,是2个32位整数的组合,所以可以使用:

((long)random1.Next() << 32)  | random1.Next()

或许

((long)random1.Next() <<< 32)  | random1.Next()

如果你使用 java (?) 并且需要一个无符号移位

编辑:看起来不像 Java。 Java 有 random1.nextLong() 。也许是 C#?我不知道

【讨论】:

  • Java 已经有 Random.nextLong() - 实际上正如您所解释的那样。无论如何,为横向思维+1。
  • Java 没有 Next() 方法,而 nextInt() 它是有符号的,因此每隔一个数字的高位全为 1。
  • 您确定这会导致沿数字范围的均匀分布吗?我倾向于认为它会使结果有点偏差,但我不是一个足够好的数学家来证明它。
【解决方案2】:

使用简单的链表可以生成任意长的数字。试想一下,列表中的每个节点都可以存储一个随机生成的数字,并且可以像读取单一数字一样读取该列表的函数。使用这样的算法,您可以获得任意长的随机数。

【讨论】:

    猜你喜欢
    • 2015-07-28
    • 2020-01-10
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多