[英]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+1
與Random()
相乘,但是沒有得到相同的結果,這就是為什么我不確定我在做什么是否正確的原因。
由於隨機函數的不同,我希望結果之間會有所不同,但是我仍然想確保自己正確地翻譯了它。
您需要將Random()
乘以i
而不是i+1
。
C ++ rand()
返回一個介於0
和RAND_MAX
之間的整數,但是您的Random()
返回一個介於0
和1
之間的浮點數,因此將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.