簡體   English   中英

如何在另一種語言的隨機函數中復制C ++ rand?

[英]How to replicate C++ rand in another language's random function?

我在公司中使用內部語言,而且它們只有Random()返回0到1之間的浮點數。

我需要移植一些使用rand()的C ++代碼:

int b = rand() % (i+1);

我看了看文檔,但不確定如何使用我的Random()生成介於0和i+1之間的數字,這就是上面的代碼,對嗎?

我嘗試將i+1Random()相乘,但是沒有得到相同的結果,這就是為什么我不確定我在做什么是否正確的原因。

由於隨機函數的不同,我希望結果之間會有所不同,但是我仍然想確保自己正確地翻譯了它。

您需要將Random()乘以i而不是i+1

C ++ rand()返回一個介於0RAND_MAX之間的整數,但是您的Random()返回一個介於01之間的浮點數,因此將Random()的輸出與i相乘,並取結果的整數部分將為您提供一個[0,i]的整數[0,i]rand() %(i+1)給出的。

Rand()為您提供0到RAND_MAX之間的數字,在應用mod運算符后,您最終得到0到i(包括i)之間的數字。

要對Random()執行相同的操作,您需要乘以(i + 1),然后取下該值(向下取整):

b = floor( Random() * (i+1) ) 

這將根據需要為您提供從0到i(包括柵欄)的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM