【z88dk】C言語/乱数を取得する
初版 2026/02/07
改訂
random.c
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <msx/gfx.h>
#define JIFFY 0xfc9e;
void randomize()
{
// 乱数シード初期化
//
// シード値はz88dkのスタートアップ時に設定されるが、常に一定値のため、
// seed_rndの引数にJIFFY(0xfc9e)の値を与えて再設定する
// ※seed_rndの引数は unsigned int型
// JIFFYのアドレスを持つポインタ変数定義
uint16_t *seed = (uint16_t *)JIFFY;
// JIFFYの値で乱数を初期化
seed_rnd(*seed);
}
uint8_t rnd(uint8_t value)
{
return get_rnd() % value;
}
void main()
{
uint8_t value;
// 乱数初期化
randomize();
// 乱数生成・表示
for (uint8_t i = 0; i < 5; i++) {
value = rnd(10) + 1;
printf("value : %u\n", value);
}
return;
}
msx/gfx.hをinclludeする。seed_rndで乱数シード設定、get_rndで0~32767の乱数を取得。上記のコードは、0~10の値を取得する。
コンパイル
compile.sh
#!/bin/sh
zcc +msx -lmsxbios --list -subtype=msxdos $1.c -o $1.com
$ ./compile.sh ./random
実行結果

※MSXDOS.SYSとCOMMAND.COM、コンパイルして作成した.COMを配置したディレクトリをopenMSXでマウント、MSXDOSから実行