Zen言語の標準ライブラリ紹介〜rand②〜

はじめに

けっこう標準ライブラリが充実しているわけですが、ドキュメントがないのがもったいないですね。 まとまった時間が取れないので、ちょこちょこ書いていくシリーズです。

リクエストあれば、優先する、かも?

乱数について続きを見ていきましょう。 前回は、Randomインタフェースと、それを実装する乱数生成器について、簡単な説明をしました。

今回は、Randomインタフェースの使い方です。

std.rand.bytes

bufで渡されたスライスをランダムなバイトで埋めます。 rRandomインタフェースを実装する乱数生成器を渡します。 これは、Randomインタフェースのfillを直接呼び出すのと同じです。

pub fn bytes(r: Random, buf: []u8) void
test "std.rand.bytes" {
    var x = rand.Xoroshiro128.init(0);
    var buf = [_]u8{ 0 } ** 10;

    rand.bytes(&x, &buf);
    debug.warn("random bytes = 0x{x}\n", .{buf});
}

std.rand.boolean

ランダムなブール値を取得します。

pub fn boolean(r: Random) bool

std.rand.int

ランダムなT型の整数値を取得します。

/// Returns a random int `i` such that `0 <= i <= maxInt(T)`.
/// `i` is evenly distributed.
pub fn int(r: Random, comptime T: type) T
test "std.rand.int" {
    var x = rand.Xoroshiro128.init(1);

    debug.warn("random i32 = {}\n", .{ rand.int(&x, i32) });
    debug.warn("random u1 = {}\n", .{ rand.int(&x, u1) });
}

その他

指定範囲の整数値を取得する関数など、色々あります。 一覧は公式ドキュメントをどうぞ。

zen-lang.org