在R中,如何生成150个随机数,至少使用一次从1到100的数字?
library(tidyverse)
set.seed(123)
df <- tibble(Random_number = sample(x = 1:100,
size = 150,
replace = TRUE)) %>%
arrange(Random_number)
例如,数字1,2,3等从来没有出现过,我知道这个脚本不够好,不能像我期望的那样,让数字1到100总是至少出现一次,但我完全不知道实际上如何编写脚本。
4条答案
按热度按时间zour9fqk1#
您可以将程序分为两个部分:一个是确保
1:100
,另一个是从1:100
中抽取额外的50
样本,例如,5w9g7ksd2#
我们可以将数字
sample
三次以达到您的目的。第一次sample
从1到100的50个数字,替换为。第二次将1到100的序列随机化。第三次将对上述两个输出进行sample
,以随机化150个数字。请注意,上面提到的后两个
sample
使用默认的sample
,而没有替换。table
结果显示从1到100的数字至少被采样一次。llycmphe3#
下面是一个函数,它对从1到n的所有数字至少采样一次。
1.如果
n
大于或等于size
,则仅为数字n
。这是因为sample(n)
将打乱序列1:n
;1.如果
size
大于n
,则序列1:n
加上1:n
中的size - n
数字创建于2023-04-08使用reprex v2.0.2
nbnkbykc4#
好吧,我错了(见对Rui的回答的评论)。尽可能避免
sample
会让事情运行得更快。