疑似乱数のつくりかた?メモ
公開 2025/02/01 19:30
最終更新 -
ライブ・ア・ライブ(SFC版) 攻略メモ帳 > 戦闘関係 > プログラミング関係の表記及び解説
https://livealivem.stars.ne.jp/sfc/program.html

ライブ・ア・ライブ(スーファミ版)での疑似乱数の作り方、乱数初期値4つを仮に1, 2, 3, 4として乱数を100個算出するプログラムをいろんなプログラミング言語で書いてみたというプログラミング初心者のメモ。

疑似乱数(Python3) #

https://paiza.io/projects/e/3TeNa18K2-uS3keyz3IY-g

# 配列A, 乱数初期値A0~A3を入れておく
A = [1, 2, 3, 4]

# 乱数出力用配列 初期はカラ
arrayRandom = []

# 初期値n = 0から99まで、
# 100個ぶんの乱数xを計算して
# 配列Aに足していくwhileループ処理
n = 0
while n < 100:
    # 乱数計算 a//bで小数点以下切り捨て除算
    x = ((A[n+1] * 256 + A[n]) // 13) % 256
    # 作った乱数を配列AとarrayRandomの末尾に追加
    A.append(x) 
    arrayRandom.append(x)
    # 初期値nを+1してループの最初に戻る
    n += 1
    
# nが100越えたらループ終了、出力
print(f"初期値:\n{A[0:4]}")
print(f"出力された乱数:\n{arrayRandom}")

疑似乱数(JavaScript) #

https://paiza.io/projects/e/O66IZz-UtX3U3kGRyn_RRQ

// 配列A, 乱数初期値A0~A3を入れておく
let A = [1, 2, 3, 4];

//乱数出力用配列 初期はカラ
let arrayRandom = [];

// 初期値n = 0から99まで、
// 100個ぶんの乱数を計算して
// 配列Aに足していくwhileループ処理
let n = 0;
while (n < 100) {
    // 乱数計算
    A[n+4] = Math.trunc((A[n+1] * 256 + A[n]) / 13) % 256;
    // 作った乱数を配列arrayRandomにも入れる
    arrayRandom[n] = A[n+4];
    // 初期値nを+1してループの最初に戻る
    n++;
}

// nが100越えたらループ終了、出力
console.log("初期値:\n" + A.slice(0, 4));
console.log("出力された乱数:\n" + arrayRandom);

疑似乱数(Go) #

https://paiza.io/projects/Gal45dFMJ93wSgjIQ4beyw

package main

import ("fmt")

func main(){
    // 配列(スライス)A, 乱数初期値A0~A3を入れておく
    A := []int{1, 2, 3, 4}
     
    // 初期値n = 0から99まで、
    // 100個ぶんの乱数xを計算して
    // 配列Aに足していくforループ処理
    for n := 0; n < 100; n++ {
        // 乱数計算(Goでは整数同士の除算は切り捨て処理)
        x := ((A[n+1] * 256 + A[n]) / 13) % 256
        // 作った乱数をappendで配列Aの末尾に追加
        A = append(A, x)
    }
    
    // nが100越えたらループ終了、出力
    fmt.Println("初期値:\n", A[0:4])
    fmt.Println("出力された乱数:\n", A[4:len(A)])
}

疑似乱数(Rust) #

https://paiza.io/projects/e/X6gjKALETDm7v0Q9FeOOKw

fn main(){
    // 配列(ベクタ)a
    // ※Rustでの命名規則の都合で小文字にします
    // 乱数初期値A0~A3を入れておく
    let mut a = vec![1, 2, 3, 4];

    // 初期値n = 0から99まで、
    // 100個ぶんの乱数xを計算して
    // 配列(ベクタ)aに足していくwhileループ処理
    let mut n = 0;
    while n < 100 {
        // 乱数計算(Rustでは整数同士の除算は切り捨て処理)
        let x = ((a[n+1] * 256 + a[n]) / 13) % 256;
       // 作った乱数をpushで配列aの末尾に追加
        a.push(x);
        // 初期値nを+1してループの最初に戻る
        n += 1;
    }

    // 配列(ベクタ)aを初期値までと後とで分割
    let random = a.split_off(4);

    // 出力
    println!("初期値:\n{:?}", a);
    println!("出力された乱数:\n{:?}", random);
}

疑似乱数(C#) #

https://paiza.io/projects/e/uf5WFcbgwCQSnjql-asXXQ

public class Program {
    public static void Main(){

        // 配列a
        // 乱数初期値A0~A3を入れておく
        int[] a = new int[104];
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;
        a[3] = 4;

        // 初期値n = 0から99まで、
        // 100個ぶんの乱数を計算して
        // 配列aに足していくwhileループ処理
        int n = 0;
        while (n < 100) {
            // 乱数計算(C#では整数同士の除算は切り捨て処理)
            a[n+4] = ((a[n+1] * 256 + a[n]) / 13) % 256;
            // 初期値nを+1してループの最初に戻る
            n += 1;
        }

        // 配列aを初期値までと後とで分割
        int[] firstArray = new int[4];
        int m = 0;
        while (m < 4) {
            firstArray[m] = a[m];
            m += 1;
        }

        int[] secondArray = new int[100];
        int i = 0;
        while (i < 100) {
            secondArray[i] = a[i+4];
            i += 1;
        }

        // 出力
        System.Console.WriteLine($"初期値:\n{string.Join(", ", firstArray)}");
        System.Console.WriteLine($"出力された乱数:\n{string.Join(", ", secondArray)}");
    }
}

疑似乱数(Java) #

https://paiza.io/projects/e/WA4_jojxREyBLG5R_GGJUA

import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // 配列a
        // 乱数初期値A0~A3を入れておく
        int[] a = new int[104];
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;
        a[3] = 4;

        // 初期値n = 0から99まで、
        // 100個ぶんの乱数を計算して
        // 配列aに足していくwhileループ処理
        int n = 0;
        while (n < 100) {
            // 乱数計算(Javaでは整数同士の除算は切り捨て処理)
            a[n+4] = ((a[n+1] * 256 + a[n]) / 13) % 256;
            // 初期値nを+1してループの最初に戻る
            n++;
        }

        // 配列aを初期値までと後とで分割
        int[] firstArray = Arrays.copyOfRange(a, 0, 4);
        int[] secondArray = Arrays.copyOfRange(a, 4, 104);

        // 出力
        System.out.println("初期値:\n" + Arrays.toString(firstArray));
        System.out.println("出力された乱数:\n" + Arrays.toString(secondArray));
    }
}

疑似乱数(Ruby) #

https://paiza.io/projects/e/yfn2a_GUPw4Q6-nWrdCwuw

# 配列A, 乱数初期値A0~A3を入れておく
A = [1, 2, 3, 4]

# 乱数出力用配列 初期はカラ
arrayRandom = []

# 初期値n = 0から99まで、
# 100個ぶんの乱数を計算して
# 配列Aに足していくwhileループ処理
n = 0
while n < 100
    # 乱数計算(Rubyでは整数同士の除算は切り捨て処理)
    x = ((A[n+1] * 256 + A[n]) / 13) % 256
    # 作った乱数を配列arrayRandomにも入れる
    A.push(x)
    arrayRandom.push(x)
    # 初期値nを+1してループの最初に戻る
    n += 1
end

# nが100越えたらループ終了、出力
puts "初期値:\n#{A.slice(0, 4)}"
puts "出力された乱数:\n#{arrayRandom}"

疑似乱数(なでしこ3) #

https://paiza.io/projects/e/zW7E2P-IGKPKB3QiIkXcjA

# 配列A, 乱数初期値A0~A3を入れておく
A = [1, 2, 3, 4]

# 乱数出力用配列 初期はカラ
乱数出力用配列 = []

# 初期値n = 0から
# 100個ぶんの乱数を計算して
# 配列Aに足していくループ処理
n = 0
100回
    # 乱数計算 truncは「切捨」で処理
    y = (A[n+1] * 256 + A[n]) / 13を切捨。
    x = y % 256
    # 作った乱数を配列乱数出力用配列にも入れる
    Aにxを配列プッシュ。
    乱数出力用配列にxを配列プッシュ。
    # 初期値nを+1してループの最初に戻る
    n = n + 1
ここまで。

初期配列=Aの0…3を配列範囲コピー。

# 出力
「初期値:」と表示。
初期配列と表示。
「出力された乱数:」と表示。
乱数出力用配列と表示。

実行結果 #


初期値:
[1, 2, 3, 4]
出力された乱数:
[39, 59, 79, 0, 140, 24, 6, 196, 227, 120, 20, 133, 76, 147, 60, 226, 84, 168, 103, 135, 242, 249, 106, 167, 58, 58, 224, 131, 122, 63, 36, 108, 226, 201, 81, 106, 135, 74, 45, 106, 187, 123, 42, 106, 132, 68, 42, 47, 69, 64, 160, 82, 241, 83, 91, 144, 117, 6, 26, 11, 127, 0, 218, 197, 9, 196, 56, 192, 20, 93, 201, 152, 40, 125, 192, 31, 160, 206, 113, 81, 228, 193, 67, 144, 234, 54, 24, 11, 57, 220, 218, 99, 240, 213, 174, 125, 116, 114, 170, 245]
ほそぼそです。
プロフィールは https://taittsuu.com/users/hoso_boso/profiles
最近の記事
「ライブアライブ」最終編の各キャラ最強装備は?
先日、マシュマロ(https://marshmallow-qa.com/s2ff8yvh6hvgfqo)に質問をいただきました。 なんともありがたい、そし…
2025/10/05 19:24
疑似乱数のつくりかた?メモ
ライブ・ア・ライブ(SFC版) 攻略メモ帳 > 戦闘関係 > プログラミング関係の表記及び解説 https://livealivem.stars.ne.jp/sf…
2025/02/01 19:30
「LIVE A LIVE 30周年大感謝祭 ―蒲田編―」に行ってきました
LIVE A LIVE 30周年大感謝祭 ー蒲田編ー https://30fes.lalevent.com/ 行ってきたぜ 松…… 日暮里―― で乗り換えて…
2024/08/26 20:54
「ライブ・ア・ライブ」(SFC版)の噂話の検証
こんにちは。 ●ライブ・ア・ライブ(SFC版) 攻略メモ帳 https://livealivem.stars.ne.jp/sfc/ ●ライブアライブ(リメイ…
2024/06/06 19:53
ソーシャルボタン(シェアボタン)のフォーマットまとめ
こんなのはとっくにどなたかまとめているはずですが。 いわゆるSNSに投稿するためのボタン(リンク)のフォーマットを、自分用…
2024/03/13 22:03
「Visual Studio Code」をHTMLエディタにしてみたい話(今更)
Visual Studio Code https://code.visualstudio.com/ 最近、なんとなく「Visual Studio Code」をHTMLエディタに使えないか…
2024/03/01 20:52
綺麗な等幅フォントをウェブサイトで見せたいだけな件
私は ライブアライブ(リメイク版) 攻略メモ帳 https://livealivem.stars.ne.jp/ というゲーム攻略サイトをやっている…
2023/11/03 19:36
申し訳ないけどタイッツー&シンプルブログのフォントを変える設定の話
※2023/12/13のアップデートでタイッツーのフォントの仕様が変更されました(ウィンドウズではシステムフォントを使用するよう変…
2023/10/29 19:29
ゲームプレイ動画に文字入れしたいだけな話
私は ライブアライブ(リメイク版) 攻略メモ帳 https://livealivem.stars.ne.jp/ というゲーム攻略サイトをやっている…
2023/10/28 19:57
攻略サイト向けにゲーム中に登場するアイコンをSVGで再現な話
私は ライブアライブ(リメイク版) 攻略メモ帳 https://livealivem.stars.ne.jp/ というゲーム攻略サイトをやっている…
2023/10/26 19:29
攻略サイトのマップってどう描くんだろう?な話
私は ライブアライブ(リメイク版) 攻略メモ帳 https://livealivem.stars.ne.jp/ というゲーム攻略サイトをやっている…
2023/10/23 19:17
サクラエディタのHTMLエディタカスタマイズ
・未だにHTMLを手打ち ・文章を作ってからHTMLにすることが多い ・スタイルシートやJavaScriptはいろんなサイトさんを参考に…
2023/10/22 15:57
もっと見る
タグ
Web制作(7)
ライブアライブ(4)
HTMLエディタ(2)
フォント(2)
Caesium(1)
draw.io(1)
LAL30th大感謝祭(1)
SAI_Ver.2(1)
SVG(1)
VSCode(1)
ゲームのマップ(1)
サクラエディタ(1)
サブセット化(1)
ジャギー(1)
シンプルブログ(1)
スーパーファミコン(1)
ソーシャルボタン(1)
タイッツー(1)
プログラミング(1)
ライブ・ア・ライブ(1)
動画編集(1)
もっと見る