gpt4 book ai didi

r - "runif"函数如何在 R 内部工作?

转载 作者:行者123 更新时间:2023-12-02 16:32:12 26 4
gpt4 key购买 nike

我试图在 R 中生成一组均匀分布的数字。我知道我们可以使用 R 中的函数“runif”来做同样的事情。但我真的很想了解如何开发此功能背后的想法。从某种意义上说,代码如何为函数“runif”工作。所以,简而言之,我想创建自己的函数,它可以完成与“runif”相同的任务

最佳答案

最终,runif 调用伪随机数生成器。可以找到一个更简单的 here在 R 代码库中用 C 语言定义,应该很容易模拟

static unsigned int I1=1234, I2=5678;

void set_seed(unsigned int i1, unsigned int i2)
{
I1 = i1; I2 = i2;
}

void get_seed(unsigned int *i1, unsigned int *i2)
{
*i1 = I1; *i2 = I2;
}


double unif_rand(void)
{
I1= 36969*(I1 & 0177777) + (I1>>16);
I2= 18000*(I2 & 0177777) + (I2>>16);
return ((I1 << 16)^(I2 & 0177777)) * 2.328306437080797e-10; /* in [0,1) */
}

如此有效,这采用初始整数种子值,按位打乱它们,然后通过乘以一个小常量将它们重新转换为 double float ,该常量将 double 归一化到 [0, 1) 范围内。

关于r - "runif"函数如何在 R 内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63325654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com