🎲

Rustの標準ライブラリで乱数生成ができるようになるかもしれない

2025/02/06に公開

現在のRustの標準ライブラリには実験的なモジュールとしてstd::randomがあります。

このモジュールには以下のアイテムが含まれています。

RandomトレイトとRandomSourceトレイトはno_std環境でも利用できます。

DefaultRandomSource構造体はgetrandomProcessPrngなどのシステムの乱数生成器を表します。
Randomトレイトは指定したデータ型の乱数を取得するためのトレイトです。
現在はi32u8などのプリミティブ整数型と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

参考文献

GitHubで編集を提案

Discussion