簡體   English   中英

沒有 runif() 的隨機統一數

[英]Random Uniform Numbers WITHOUT runif()

通常為了生成一系列均勻隨機數,我使用 R 中的“runif()”命令:

runif(10,0,10)

 [1] 5.032995 8.712604 4.400579 3.874882 2.401324 2.465861 2.59525 8.570266 2.729831 5.176705

出於好奇,我想知道是否有其他方法可以在不使用“runif”命令的情況下生成隨機統一數。 我聽說可以使用計算機的時鍾生成隨機數,但我不確定這是如何完成的。

  • 是否可以編寫一個生成隨機統一數字(在某個范圍之間)的 R 腳本,以便不使用“runif”命令?

謝謝!

@德米特里的循環回答:

v = rep(0,100)
v[1]=3
for (j in 1:100) {
v[j+1]=(65539*v[j])%%(2^31)
}

    i = 1:101

range01 <- function(x, ...){(x - min(x, ...)) / (max(x, ...) - min(x, ...))}
      
    rand_data = data.frame(i,v)
    rand_data$int_version = range01(rand_data$v)


plot(rand_data$v, type = "b", main = "100 Random Real Numbers with Randu")

plot(rand_data$int_version, type = "b", main = "100 Random Integers with Randu")

在此處輸入圖像描述 在此處輸入圖像描述

您可以從 Sys.time 獲取小數秒,並將其用作單次平局的窮人黑客:

as.numeric( substr( as.character( unclass(Sys.time())), start=11,stop=16))

這不會是生成隨機數序列的特別好的方法。

是的,當然,您必須自己實現一種偽隨機數生成算法 RANDU開始,但千萬不要用在實際目的上,哈哈

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM