[英]How to generate a new sequence of random numbers every day?
我在游戲中每天挑戰。 每天應該是一個新的挑戰。 我的程序生成使用隨機數生成器 。 兩次嘗試每日挑戰(或兩個不同的用戶嘗試)應具有相同的結果(相同的隨機數序列)。
我想要:
我想我應該創建一個以DateTime
作為種子的Random
,但是我不確定如何。 DateTime.UtcNow.Ticks
是一個long型,而DateTime的種子是一個int
。
我不希望hours/minutes/seconds
影響隨機性(除了昨天和今天之間的邊界)。 我找到的答案都是關於將當前時間傳遞給Random
(或者這是默認的無參數ctor行為)。
// UTC ensures all users see the date flip occur at the same
// time. If you want the date flip to be local for the user's
// time zone, use DateTime.Today instead.
var date = DateTime.UtcNow.Date;
// Generate a seed by combining the year and the day of the year.
// DayOfYear is always gregorian (ignores culture) and always in
// [1,366].
var seed = date.Year * 1000 + date.DayOfYear;
return new Random(seed);
最好每天生成一次隨機數序列並將其存儲,以便可以將那些數字“重放”給當天挑戰的人們。 例如,如果該挑戰由隨機生成的益智游戲板組成,則此方法可能可行。 這種方法還具有以下優勢:該應用程序不會與特定RNG的實現綁定。 另請參閱我關於種子RNG的文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.