在这个StackOverflow的问题: 从范围生成随机整数 接受的答案build议在给定的min和max之间生成一个随机整数,其中min和max包含在以下公式中: output = min + (rand() % (int)(max – min + 1)) 但也是这样说的 这仍然略微偏向较低的数字…也可以扩展它,以消除偏见。 但这并不能解释为什么它偏向较低的数字或如何消除偏见。 所以,问题是:这是在一个(有符号)范围内生成一个随机整数的最优方法,而不依赖任何花哨,只是rand()函数,并且如果它是最优的,如何消除偏? 编辑: 我刚刚testing了@Joey针对浮点外推提出的while -loopalgorithm: static const double s_invRandMax = 1.0/((double)RAND_MAX + 1.0); return min + (int)(((double)(max + 1 – min))*rand()*s_invRandMax); 看看有多less统一的“球”正在“落入”并分布在多个“桶”之中,一个用于浮点外推的testing,另一个用于while loopalgorithm。 但结果却因“球”(和“水桶”)的数量而变化,所以我不能轻易挑选出一个胜利者。 工作代码可以在这个Ideone页面find。 例如,对于10个桶和100个球,对于浮点外推的理想概率的最大偏差对于浮点外推比对于循环的algorithm(分别为0.04和0.05)要小,但对于1000个球,最大偏差-loopalgorithm较小(0.024和0.011),而有10000个球时,浮点外推再次变得更好(0.0034和0.0053)等等,没有太多的一致性。 考虑到没有任何一种algorithm一致地产生均匀分布的可能性比其他algorithm更好,这使得我倾向于浮点外推,因为它似乎比while loopalgorithm执行得更快。 那么select浮点外推algorithm还是不错,或者我的testing/结论不完全正确?
我怎样随机洗牌,以保持原有的位置? 换句话说,给定一个具有不同元素的列表A ,我想生成它的排列B 这个排列是随机的 并且对于每个n , a[n] != b[n] 例如 a = [1,2,3,4] b = [4,1,2,3] # good b = [4,2,1,3] # good a = [1,2,3,4] x = [2,4,3,1] # bad 我不知道这样一个排列的恰当的术语(这是“总”?),因此很难search。 正确的名词似乎是“混乱”。
我想通过如何实现rand()和srand()函数,并想调整代码来修改它以符合我的要求。 我在哪里可以findrand()和srand()的源代码。
从这些问题 – R数据框的子集中的行的随机样本和数据框中的 样本随机行我可以很容易地看到如何随机地从df或“n”行中抽样(select)'n'行,这些行来自特定级别在一个df内的一个因素。 以下是一些示例数据: df <- data.frame(matrix(rnorm(80), nrow=40)) df$color <- rep(c("blue", "red", "yellow", "pink"), each=10) df[sample(nrow(df), 3), ] #samples 3 random rows from df, without replacement. 例如,只需从“粉红”颜色中抽取3个随机行 – 使用library(kimisc) : library(kimisc) sample.rows(subset(df, color == "pink"), 3) 或编写自定义function: sample.df <- function(df, n) df[sample(nrow(df), n), , drop = FALSE] sample.df(subset(df, color == "pink"), 3) 但是,我想从该因子的每个级别抽样3(或n)个随机行。 即新的DF将有12行(蓝色3,红色3,黄色3,粉红色3)。 […]
srand(time(null)); printf("%d", rand()); 给出一个高范围的随机数(0-32000ish),但我只需要大约0-63或0-127,但我不知道该怎么去做。 任何帮助?
我正在寻找一个简单的函数,可以根据它们相应的(也是指定的)概率生成一个指定的随机值数组。 我只需要它来生成浮点值,但我不明白为什么它不应该能够产生任何标量。 我可以从现有的function中想到很多构build这个function的方法,但我想我可能只是错过了一个明显的SciPy或NumPyfunction。 例如: >>> values = [1.1, 2.2, 3.3] >>> probabilities = [0.2, 0.5, 0.3] >>> print some_function(values, probabilities, size=10) (2.2, 1.1, 3.3, 3.3, 2.2, 2.2, 1.1, 2.2, 3.3, 2.2) 注:我发现scipy.stats.rv_discrete,但我不明白它是如何工作的。 具体而言,我不明白这(下面)意味着什么,也不应该做什么: numargs = generic.numargs [ <shape(s)> ] = ['Replace with resonable value', ]*numargs 如果rv_discrete是我应该使用的,请给我一个简单的例子和上面的“形状”的说明解释?
Java是否有任何function来生成随机字符或string? 或者必须简单地select一个随机整数并将该整数的ascii代码转换为一个字符?
我怎样才能在一个范围内生成一个随机数,但排除一些,而不会继续生成,并检查生成的数字是否是我想排除的数字之一?
我如何使用Red Hat Linux上的标准工具随机化文件中的行? 我没有shuf命令,所以我正在寻找类似perl或awk的单行内容来完成相同的任务。
有没有人有一个最喜欢的助推随机数发生器,你可以解释一下如何实现它成代码。 我试图让梅森扭转工作,并想知道如果有人偏好对其他人之一。