生成一个随机数,直到它与用户的输入匹配

时间:2013-09-20 17:31:50

标签: matlab random

比如说,用户必须在指定范围之间输入一个数字,并且您希望MatLab跟踪生成大于用户所选数字的数字所花费的次数。

您如何在randi函数上添加条件,以及如何跟踪尝试次数?

我正在考虑将用户的输入设置为变量a,然后声明“while”条件,保持输入值“a”必须介于我指定的范围之间,如果为true,则启动{{1}功能与其条件;如果输入的值不在指定范围内,则显示错误消息。

1 个答案:

答案 0 :(得分:1)

这是一个使用rand(选择0到1之间的数字)而不是randi的简单实现:

buff=1000; % number of random numbers to test with each iteration... 
yn=1;
while yn
    num=input('Enter a number between 0 and 1 >> ');
    nn = -buff;
    found=[];
    while isempty(found)
       nn= nn+buff;
       found=find(rand(buff,1)>num,1,'first');
    end
    nn=nn+found;
    disp(nn)
    yn=input('Would you like to try again? (0=no,1=yes) >> ');
end

变量nn包含首次成功之前的试验次数。

测试运行如下:

Enter a number between 0 and 1 >> 0.999
        1325
Would you like to try again? (0=no,1=yes) >> 0

使用randi的修改应该很简单。