我是python的新手.我需要在1到100之间拉出5个随机数.但是,这五个数字不能相同.我正在考虑创建一个向量(范围(1,101))并从向量中提取随机值,然后创建一个循环,表明如果第二个绘制等于第一个绘制,则绘制另一个随机数,如果之后的绘制等于前两次绘制等等,直到拉出5个不等的随机数.有没有更优雅的方式来做到这一点?
我有一个从数据库返回通用列表集合(List)的方法.此系列包含订单详细信息,即订单ID,订单名称,产品详细信息等.
此外,该方法返回一个集合,该集合仅包含按订单日期降序排序的前5个订单.
我的要求是每次客户端调用此方法时,我需要返回有5个随机命令的集合.
我如何使用C#实现这一目标?
我正在处理大量的整数排列.每个排列中的元素数量为K.元素大小为1个字节.我需要生成N个唯一的随机排列.
约束:K <= 144,N <= 1,000,000.
我想出了以下简单的算法:
有一个更好的方法吗?特别是,有没有办法不将所有排列存储在RAM中(在生成时将它们写在磁盘上)?
编辑:最后,需要按顺序访问生成的排列(逐个访问,不需要随机访问).RAM是更关键的因素(我宁愿不在RAM中同时存储所有排列).
language-agnostic algorithm permutation combinatorics random-sample
在将少量莎士比亚书籍送到我的Perl脚本后,我有一个哈希,其中包含26个英文字母作为键,以及它们在文本中出现的次数 - 作为值:
%freq = (
a => 24645246,
b => 1409459,
....
z => 807451,
);
Run Code Online (Sandbox Code Playgroud)
当然还有所有字母的总数 - 让我们在$total变量中说.
是否有一个很好的技巧来生成一个包含16个随机字母的字符串(一个字母可以在那里出现几次) - 按使用频率加权?
要在类似于Ruzzle的文字游戏中使用:

优雅的东西 - 比如从文件中挑选一条随机行,如Perl Cookbook收据所示:
rand($.) < 1 && ($line = $_) while <>;
Run Code Online (Sandbox Code Playgroud) 我有两个矢量"H"和"L",它们有200个数值.我想创建一个名为"HL"的第三个向量,它包含来自H和L的200个随机样本.但是,我希望它们能够并行选择,就像pmin和pmax函数一样.
简化示例:
H <- 1:5
L <- 6:10
# rbind(H,L)
# [,1] [,2] [,3] [,4] [,5]
# H 1 2 3 4 5
# L 6 7 8 9 10
# intended result is then a random pick from each 'column' shown above, e.g:
HL <- c(6,2,8,4,10)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用循环的情况下执行此操作?
任何建议将不胜感激谢谢
这是我的第一篇文章,请耐心等待.以下是我的数据的一小部分样本.我的实际数据集有超过4,000个个人ID,每个ID可以分配给它的一到两百个单独的美元金额.
ID Dollars
001 17000
001 18000
001 23000
002 64000
002 31000
003 96000
003 164000
003 76000
Run Code Online (Sandbox Code Playgroud)
我最初尝试做的事情可以用一个例子来解释.我想为每个ID生成五个随机样本,替换.每个样本的大小为5或5个随机抽样的美元值.我的最终结果将有20,000个单独的样本(5个样本,每4000个ID,每个ID包含5个随机选择的ID金额).我这样做是为了将每个样本中的美元分布与具有相同ID的其他样本进行比较.
截至目前,我正试图使用下面引用的代码获得这样的答案.我还应该指出,当我运行这个脚本时,我收到一个错误,我的'结果必须是全原子'.我不确定是否需要添加额外的步骤或什么.
x <- function(func)
{
func<-(lapply(1:5, function(i)
sample(data$Dollars, size=5, replace=TRUE)))
}
grouped.samples<-ddply(data,.variables="ID",.fun=x)
Run Code Online (Sandbox Code Playgroud)
如果我提出的问题不明确,我会提前感到抱歉; 我很难说出我遇到的问题.
在此先感谢您的帮助
我在R中找不到这个问题的答案.我想生成0到1'随机样本'的随机样本.对于每个样本,我希望有一个特定数量的值'numval',它是从矢量'Prob'的长度导出的.'Prob'给出了每个单独的点将为0或1的概率值.因此,在这种情况下,第一个数字的概率值为0.9为1,0.1为0.依此类推.然后,我想重复随机样本生成1000次.我有一个脚本(下面)生成随机0和1,但我在给出概率值时缺少组件.非常感谢帮助 - 我对R来说相当新.
Prob <- c(0.9, 0.3, 0.6, 0.8, 0.23, 0.45, 0.1, 0.3, 0.5, 0.03)
RandomSample <- list()
zeroones <- c(0,1)
rep = 1000
numval <- length(Prob)
for (i in 1:rep) RandomSample[[i]] <- c(sample(zeroones,numval,replace = TRUE))
t(sapply(RandomSample, unlist, simplify = TRUE))
Run Code Online (Sandbox Code Playgroud) 目标:将数据帧随机分成3个样本.
这是一个笨重的解决方案:
allrows <- 1:nrow(mtcars)
set.seed(7)
trainrows <- sample(allrows, replace = F, size = 0.6*length(allrows))
test_cvrows <- allrows[-trainrows]
testrows <- sample(test_cvrows, replace=F, size = 0.5*length(test_cvrows))
cvrows <- test_cvrows[-which(test_cvrows %in% testrows)]
train <- mtcars[trainrows,]
test <- mtcars[testrows,]
cvr <- mtcars[cvrows,]
Run Code Online (Sandbox Code Playgroud)
必须有一些更容易的东西,也许在一个包中. dplyr有sample_frac功能,但似乎针对单个样本,而不是分成多个.
关闭,但不是这个问题的答案: R中有多个概率的随机样本
我需要n从一组N(where 0 < n < N)中随机选择记录.
一种可能的算法是:
遍历列表并为每个元素,使选择的概率=
(number needed) / (number left)因此,如果您有40个项目,则第一个项目有
5/40可能被选中.如果是,下一个有
4/39机会,否则它有5/39机会.当你到达目的地时,你会得到5件物品,而且在此之前你通常会拥有所有物品.
假设一个好的伪随机数发生器,这个算法是否正确?
注意
stackoverflow上有很多这类问题(其中很多都被标记为C#中List <T>中选择N个随机元素的重复).
上面的算法经常被提出(例如Kyle Cronin的答案)并且总是受到质疑(例如,见 这里,这里,这里,这里 ......).
我可以对此事做最后的决定吗?
random-sample ×10
random ×5
r ×4
algorithm ×2
arrays ×1
c# ×1
correctness ×1
filtering ×1
generics ×1
loops ×1
perl ×1
permutation ×1
probability ×1
python ×1
sample ×1
sample-data ×1
statistics ×1