Goのmath/random
ライブラリには64ビットの数値を生成する関数がありません。これは約4年間an open issueでした。その間、回避策はどのように見えますか?Goでランダムなuint64をどのように生成しますか?
6
A
答えて
9
最も簡単には二回rand.Uint32()
を呼び出すために、次のようになります。
func Uint64() uint64 {
return uint64(rand.Uint32())<<32 + uint64(rand.Uint32())
}
別のオプションは、それからuint64
値を取得するためにencoding/binary
パッケージを使用し、rand.Read()
(was added in Go 1.7)は8つのバイトを読み取るために呼び出すことです
func Uint64() uint64 {
buf := make([]byte, 8)
rand.Read(buf) // Always succeeds, no need to check error
return binary.LittleEndian.Uint64(buf)
}
注:rand.Read()
の状態のドキュメントとして、常に渡されるスライスの長さと同じバイト数を読み込み、常にnil
エラーを返します。したがって、cこの場合にはちょっとしたエラーです。
注2:binary.LittleEndian
の代わりにbinary.BigEndian
を使用することもできます。すべてのバイトを使用して乱数を生成するため、バイトの順序は完全には関係ありません。
4
また、ランダムな8つのバイトを読んで、その問題が、あなたのために動作しません何らかの理由は2つのランダムUINT32年代を使うことを提案uint64型
b := make([]byte, 8)
_, err := rand.Read(b)
return binary.LittleEndian.Uint64(b), err
関連する問題
- 1. fmtを使用してGoで定数uint64を印刷するにはどうすればよいですか?
- 2. tf.train.shuffle_batchランダムな画像を生成しないようです。
- 3. Bcrypt、どのようにランダムな塩で確認しますか?
- 4. どのようにランダムな明るい色を生成するには?
- 5. どのように私はインターネットでPythonでランダムなIPを生成できますか?
- 6. ランダムなデータの生成でランダムなデータが生成される
- 7. どのように素早くarc4randomでランダムな文字列を生成するのですか?可能です?
- 8. どのように生成し、クラシックaspでランダム変数名を保存
- 9. GOでスライスはどのように機能しますか?
- 10. Goで定数はどのように機能しますか?
- 11. `fmt.Println`はGoでどのように動作しますか?
- 12. コードビハインドファイルでAntiForgeryTokenをどのように生成しますか?
- 13. どのようにC#で乱数を生成しますか?
- 14. MySqlでランダムでユニークなvarchar(n)を生成しますか?
- 15. Matlab、どのように交差点なしでランダムな線を生成するには?
- 16. ランダムなラムダ式を生成して実行するにはどうすればよいですか?
- 17. Go - ポインタパラメータの値をどのように変更しますか?
- 18. Pythonで20のランダムな倍数を生成するにはどうすればよいですか?
- 19. ランダムであるが有効なデータをアプリケーションに生成するにはどうすればよいですか?
- 20. Pythonでランダムなファイル名(ちょうど名前)を生成
- 21. Javaでランダムな単語を生成しますか?
- 22. どのようにしてモーダルパーマリンクを生成しますか
- 23. 私はどのように素早くランダムな色を生成するのですか
- 24. このランダムなプロモーションコード生成スクリプトを改善するにはどうすればよいですか?
- 25. ランダムなサイズのパネルを生成するにはどうすればよいですか? C#
- 26. は、どのように私は100年代のことインクリメントとランダムな整数を生成します - C#
- 27. PHPで長さがランダムな文字列を生成するにはどうすればよいですか?
- 28. Goのopenpgpパッケージはどのように使用しますか?
- 29. どのようにランダム矩形を(自動的に)作成できますか?
- 30. Goで辞書のようなPythonを作成するには?
に変換することができますか? – evanmcdonnal
あなたは2つのint32番号、または類似のものをshift-ORすることができます。また、crypto/randパッケージを使用して、バイトバッファをuint64にコピーすることもできます。 –
これは、1.8リリースサイクルが10月末に終了する前に修正する必要があります。https://go-review.googlesource.com/c/27253/1 –