如何在R中生成随机的64位十六进制数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中生成随机的64位十六进制数?相关的知识,希望对你有一定的参考价值。

要在区块链应用程序中应用,我需要在R中生成随机的64位十六进制数字。

我认为由于计算机的容量,一次获得这样一个64位十六进制数字是相当麻烦的,也许是不可能的。

所以,我认为我应该生成具有相当低位数的随机十六进制数,并将它们连接起来(连接)以获得随机的64位十六进制数。

我接近解决方案:

library(fBasics)
.dec.to.hex(abs(ceiling(rnorm(1) * 1e6)))

产生随机十六进制数。问题是在某些情况下,我得到6位十六进制数,在某些情况下,我得到7位十六进制数。因此,首先要解决这个问题。

任何的想法?

答案

.dec.to.hex()的最大论点是.dec.to.hex(2^30.99999....9)。那么,问题减少到2^30.99999=2147468763是什么力量10?

2147468763 = A.147468763

1e9 <2.147468763e9。因此第9次力量。但是,rnorm(1)可能会产生“>5”。为安全起见,请使用8次方(.dec.to.hex(abs(ceiling(rnorm(1) * 1e8)))为7或8位六位数.10*7 >= 64)。

library(fBasics)
strtrim(paste(sapply(1:10, function(i) .dec.to.hex(abs(ceiling(rnorm(1) * 1e8)))), collapse=""), 64)
# 0397601803C22E220509810703BDE2300460EA80322F000CF50ABD0226F27009

10次​​迭代而不是11次;因此,操作少了一点!

nchar(strtrim(paste(sapply(1:10, function(i) .dec.to.hex(abs(ceiling(rnorm(1) * 1e8)))), collapse=""), 64))
# 64
另一答案
library(fBasics)
strtrim(paste(sapply(1:11, function(i) .dec.to.hex(abs(ceiling(rnorm(1) * 1e6)))), collapse=""), 64)
# 08FBFA019B4930E2AF707AFEE08A0F90D765E05757607609B0691190FC54E012

让我们检查:

nchar(strtrim(paste(sapply(1:11, function(i) .dec.to.hex(abs(ceiling(rnorm(1) * 1e6)))), collapse=""), 64)) # 64

以上是关于如何在R中生成随机的64位十六进制数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在批处理文件中生成 4 位随机数?

c语言如何随机产生32位二进制数,求程序。。。

在 C++ 中生成随机双精度数

在R中生成随机块示意图

如何在 Elixir 中生成随机数?

在 haskell 中,如何从十进制数中生成二进制数字?