🎲
Rustの標準ライブラリで乱数生成ができるようになるかもしれない
現在のRustの標準ライブラリには実験的なモジュールとしてstd::random
があります。
このモジュールには以下のアイテムが含まれています。
-
DefaultRandomSource
構造体 -
Random
トレイト -
RandomSource
トレイト -
random
関数
Random
トレイトとRandomSource
トレイトはno_std
環境でも利用できます。
DefaultRandomSource
構造体はgetrandom
やProcessPrng
などのシステムの乱数生成器を表します。
Random
トレイトは指定したデータ型の乱数を取得するためのトレイトです。
現在はi32
やu8
などのプリミティブ整数型とbool
に対して実装されています。
RandomSource
トレイトは乱数性の源を表し、現在はDefaultRandomSource
構造体に対して実装されています。
random
関数はDefaultRandomSource
構造体から乱数を生成します。
このモジュールが安定化された場合、rand
クレートを使わないで標準ライブラリだけで乱数生成ができるようになると思います。
ただし、このモジュールが提供するのは基本的な機能だけなようなので、異なる乱数生成器を使いたいなどより強力な機能が必要なときはrand
クレートは引き続き有用だと思います。
使い方
random
モジュールは実験的なので利用するにはrandom
機能を有効にする必要があります。
main.rs
#![feature(random)]
fn main() {
let v: i32 = std::random::random();
println!("{v}");
}
これは以下のような結果を得られます。
$ cargo +nightly run
980775249
$ cargo +nightly run
-1575229708
Discussion