【问题标题】:Matlab: random integers from a range with no repetitionMatlab:来自不重复范围的随机整数
【发布时间】:2019-08-09 00:34:58
【问题描述】:

我想得到一个随机整数包含在范围内且不重复的数组,我使用了:

randperm(15,3)

输出是:

8, 10, 12

此函数不使用范围,我只想从 10 中随机取值,例如

【问题讨论】:

  • 请edit你的问题,不清楚。当您只提供一个值 (15) 时,您期望的范围是多少?你不能简单地使用a - 1 + randperm( b-a+1, k )吗?

标签: matlab random integer range


【解决方案1】:

如果您有统计工具箱,您可以使用randsample 而无需替换。

% MATLAB R2017a
LB = 3;   % lower bound of range (integer)
UB = 17;  % upper bound of range (integer),  UB > LB
randsample(LB:UB,3,'false') 

@Wolfie 使用randperm 的方法效果很好,并且不需要工具箱。

LB - 1 + randperm(UB-LB+1,3)

请注意,randi 适用于范围内的均匀分布(离散均匀)整数,但它对 替换 进行采样(可以给出重复项)。据我所知,这不需要工具箱,但需要结合一个过程来删除重复项并重新采样,直到所有整数都是唯一的。

randi([LB UB],3,1)

注意:如果@Wolfie 将其作为答案发布,或者可以根据共识将此答案社区wiki 设为,将删除@Wolfie 的方法。

【讨论】:

    猜你喜欢
    • 2017-03-09
    • 2013-10-10
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2013-02-14
    • 2017-02-13
    相关资源
    最近更新 更多