gpt4 book ai didi

matlab - 找到最大和最小数之间的数字并生成该范围内的随机整数

转载 作者:行者123 更新时间:2023-12-02 07:03:50 24 4
gpt4 key购买 nike

我试图通过在从最小到最大的范围内生成随机整数,直到找到数字的匹配来找到查找最大数字和最小数字之间的整数所需的猜测总数。

例如,当我输入 max = 10min = 1 然后我选择这两个数字之间的 5 时,我想生成一个随机数范围 1:10 中的数字,直到找到我选择的数字 5,然后我们显示获得该数字的试验计数。我在 MATLAB 中编写了以下代码,但我不明白为什么它不起作用。

minumber = input('Please enter a minimum value: ');
maxnumber = input('Please enter a maximum value: ');
choicenumber = input('Please enter your choice in this range: ');
randnumber = (maxnumber-minumber).*rand(maxnumber,1) + minumber;
i = 1;

while randnumber(i) ~= choicenumber
tries(i) = randnumber(i);
i = i + 1;
end
fprintf('It took %d tries to generate your number', i);

最佳答案

我有三点意见:

  1. 如果您的目的是生成随机整数,请勿使用 rand。这会生成 [0,1] 范围内的 float ,如果您缩放该数字以使其确认到最小和最大范围,则浮点错误将阻止您正确执行等式比较。查看这个规范的 Stack Overflow 帖子:Why is 24.0000 not equal to 24.0000 in MATLAB? 。如果要生成随机整数,请使用 randi为此。您实际上可以直接指定要生成的最小和最大整数,并将其作为二元素数组输入。

  2. while 循环内是您应该生成数字的位置。您仅在 while 循环之外生成一次数字,并且仅当您在第一次尝试时设法生成所需的数字时才会退出。否则,这将无限期地挂起。

  3. tries 变量设为标量。你只想累积需要猜测多少次。对randnumber 执行同样的操作。从我在你的代码中看到的,你不需要记住每个猜测的历史。

<小时/>

根据上述注释,执行以下操作:

minumber = input('Please enter a minimum value: ');
maxnumber = input('Please enter a maximum value: ');
choicenumber = input('Please enter your choice in this range: ');

randnumber = randi([minumber maxnumber], 1); % Change
tries = 1; % Change

while randnumber ~= choicenumber
randnumber = randi([minumber maxnumber], 1); % Regenerate number
tries = tries + 1; % Change
end
fprintf('It took %d tries to generate your number.\n', tries); % Change
<小时/>

我将上面的代码放入名为 test_random.m 的测试脚本中并运行了几次。以下是我使用您所需的输入运行的一些示例运行:

>> test_random
Please enter a minimum value: 1
Please enter a maximum value: 10
Please enter your choice in this range: 5
It took 4 tries to generate your number.
>> test_random
Please enter a minimum value: 1
Please enter a maximum value: 10
Please enter your choice in this range: 5
It took 10 tries to generate your number.
>> test_random
Please enter a minimum value: 1
Please enter a maximum value: 10
Please enter your choice in this range: 5
It took 16 tries to generate your number.

关于matlab - 找到最大和最小数之间的数字并生成该范围内的随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com