[英]How to make so Random Number (under 50 milliseconds) wont repeat twice
我正在制作腳本,它以毫秒為單位生成隨機數(范圍 20-100),假設它產生了延遲:30、40、42(全部 <(小於)50)
現在我想讓它第四次延遲不能再小於 50,我試過這個:
我嘗試使用 for 循環,但是當我使用此代碼腳本時,我的腳本根本不起作用/它不會切換或任何東西。
試想一下,您編寫了腳本,它生成了 20-100 的隨機數,並且您不希望 4 行延遲小於 50,您會怎么做? 謝謝。
for (int i = 0; i < 4;)
{
// Total Delay aka delay1+delay2
if (totaldelay < 50)
{
i++;
}
// Should make totaldelay > 50
if (i == 3)
{
delay1 = RandomInt(75, 105);
}
// Reset to 0 so it checks from 0 again
if (total > 50)
{
i = 0;
}
}
如果我正確理解了這個問題,您不希望四個連續的數字都小於 50。您可以通過簡單地保持計數並調整您的行為來實現這一點,以便在前三個都小於時生成不同的數字50.
如果您正在尋找一個獨立的 C++ function 來執行此操作(每次調用給您一個隨機數,並帶有您的特定附加限制),您可以使用類似的東西:
int getMyRand() {
// Keep track of how many consecutive under-50s already done.
// Careful in multi-threaded code, may need thread-local instead.
static int consecUnder50 = 0;
int number;
// If last three were all < 50, force next one to be >= 50.
if (consecUnder50 == 3) {
number = rand() % 51 + 50; // 50-100 (inclusive).
} else {
number = rand() % 81 + 20; // 20-100 (inclusive).
}
// If less, record it, otherwise restart count.
if (number < 50) {
++consecUnder50;
} else {
consecUnder50 = 0;
}
// Give caller the number.
return number;
}
不要忘記在使用它之前為隨機數生成器播種,並注意 C++ 具有更好的隨機數生成器,盡管rand()
通常很好,除非你是統計學家或密碼學家:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.