2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mind9新機能「評価」でTcl乱数関数の定義

2
Last updated at Posted at 2026-08-08

はじめに

日本語プログラミング言語Mindのバージョン9の言語拡張機能「評価」でTcl乱数関数を定義します。Mind9ベータ版で実装のリリース版での追検証となります。本記事はマニュアル未記載な内容でMind9の本来のサポートレベルを超えた内容です。

前提条件

Windows11 Pro 22H2 22621.4317
mind version 9.03

Mind9の言語拡張機能「評価」とは

たいへんお手数ですが、詳しくはこちらの記事をご参照ください。
また言語開発者ご自身によるMind9とTcl/Tkの関係の解説記事がQiitaに存在します。

こちらは本記事筆者によるC言語でTclを扱った記事です。

お題のソースコード

今回はこちらに記載の

[使用例2]の(2)に対応した関数を用意しております。

% expr rand() * 100          ---(1)
75.90084829176816

% expr rand() * (5-2)+2      ---(2)
2.5687755898427103

% set x [expr rand() * 100] ---(3)
28.997123674022557

また、記事中にあります下記のコメントについても検証してみます。

※a以上b以下の乱数を生成する場合は(b-a+1)+a になります。

ライブラリ

randomtcl.src
範囲指定の疑似乱数とは 関数 整数入力 整数入力 小数出力 (変数 変数 → 小数)
    ※ 範囲指定の最小値以上~最大値未満 の 乱数を戻す  
        最小値は 変数
        最大値は 変数

    最大値に 入れ
    最小値に 入れ
    「expr { rand() * ( 」を コマンドラインにトークンを設定し
    最大値を  文字列変換し コマンドラインにトークンを追加し
    「 - 」を コマンドラインにトークンを追加し
    最小値を  文字列変換し コマンドラインにトークンを追加し
    「) + 」を コマンドラインにトークンを追加し
    最小値を  文字列変換し コマンドラインにトークンを追加し
    「 }」を コマンドラインにトークンを追加し
     コマンドラインを 評価した値を 数値変換・小数として
    捨てる。

    
範囲指定の疑似乱数2とは 関数 整数入力 整数入力 小数出力 (変数 変数 → 小数)
    ※ 範囲指定の最小値以上~最大値+1未満 の 乱数を戻す  
        最小値は 変数
        最大値は 変数

    最大値に 入れ
    最小値に 入れ
    「expr { rand() * ( 」を コマンドラインにトークンを設定し
    最大値を  文字列変換し コマンドラインにトークンを追加し
    「 - 」を コマンドラインにトークンを追加し
    最小値を  文字列変換し コマンドラインにトークンを追加し
    「 + 1) + 」を コマンドラインにトークンを追加し
    最小値を  文字列変換し コマンドラインにトークンを追加し
    「 }」を コマンドラインにトークンを追加し
     コマンドラインを 評価した値を 数値変換・小数として
    捨てる。

疑似乱数()と種子指定の疑似乱数(n)の定義は前回記事をご参照ください。

テスト用コード

randomtcl4.src
"randomtcl.src"を コンパイルする。

簡易小数表示とは (小数 → ・)
	10桁で 小数形式で表示すること。

    ※ テスト用
メインとは
    コンソールを開く

    「疑似乱数() 疑似乱数() 種子指定の疑似乱数(5000) 疑似乱数()」を 表示し 改行し
    疑似乱数()を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 空白表示し
    種子指定の疑似乱数(50000)を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 改行し

    疑似乱数()を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 空白表示し
    種子指定の疑似乱数(50000)を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 改行し

    「疑似乱数() 疑似乱数() 種子指定の疑似乱数(8000) 疑似乱数()」を 表示し 改行し
    疑似乱数()を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 空白表示し
    種子指定の疑似乱数(80000)を 簡易小数表示し 空白表示し
    疑似乱数()を 簡易小数表示し 改行し

    「範囲指定の疑似乱数(2,5) 範囲指定の疑似乱数2(2,5) 範囲指定の疑似乱数(-5,5) 範囲指定の疑似乱数2(-5,5)」を 表示し 改行し
    20で 回数指定し
    範囲指定の疑似乱数(2,5)を 簡易小数表示し 空白表示し
    範囲指定の疑似乱数2(2,5)を 簡易小数表示し 空白表示し
    範囲指定の疑似乱数(-5,5)を 簡易小数表示し  空白表示し
    範囲指定の疑似乱数2(-5,5)を 簡易小数表示し  空白表示し  改行し
    繰り返すこと。  

お題のソースコードのMind9でのビルド

TclはMind9の場合Tcl/Tkを利用するために導入されているため、GUIアプリケーション用のライブラリからのコンパイルが必要となります。

C:\developments\vscode\mind9>mind randomtcl4 guilib

日本語プログラミング言語 Mind Version 9.03 for Windows
          Copyright(C) 1985 Scripts Lab. Inc.
コンパイル中 .. 終了
Coping.. c:\Mind9\bin\mindexw.exe --> randomtcl4.exe

Mind9での実行の様子

今回はMind独自のコンソールウィンドウを展開して結果を出力しています。

randomtcl4.src
メインとは
    コンソールを開く

tclrandom4.jpg

上図のCUI出力を以下に示します。

疑似乱数() 疑似乱数() 種子指定の疑似乱数(5000) 疑似乱数()
0.8382121273 0.8312227967 0.3913184630 0.8894071583
0.2661097517 0.5065961725 0.3913184630 0.8894071583
疑似乱数() 疑似乱数() 種子指定の疑似乱数(8000) 疑似乱数()
0.2661097517 0.5065961725 0.6261095408 0.0230514533
範囲指定の疑似乱数(2,5) 範囲指定の疑似乱数2(2,5) 範囲指定の疑似乱数(-5,5) 範囲指定の疑似乱数2(-5,5)
3.2773268080 2.0422155038 -1.2100702646 3.0839687195
3.7078914767 2.7093978621 2.1246692897 -0.2515720717
2.4985975663 3.2390617455 -2.7231101076 3.4572641661
4.7924106860 2.0618672520 4.5072617938 4.4038658097
2.7561811748 3.5160059396 3.7795662455 3.9868772365
2.3942856390 5.6783129031 -1.4875931416 -1.6757241705
2.5737818142 4.0679356335 4.4854807851 -2.2768887469
3.9993175180 5.3726993498 -2.6050686639 -3.2279372621
3.6523004862 4.9523616186 -4.1456899648 4.2276372505
4.9725281712 2.3746322004 -3.8915196661 -4.7481315712
4.4961861365 3.8671948546 -0.1401971584 4.5769948194
4.3323443124 4.2811441283 2.9734113477 5.0369729595
3.7466902839 4.1648014980 4.5469430739 1.0194669953
2.5950335039 4.3041329544 -1.0935902158 0.5321669213
3.9443945149 2.5848152286 -2.5261310290 4.1473747846
3.0712742238 4.5411718835 -1.3103856735 -3.5172150678
3.6817334903 4.5263616343 -3.6000321194 5.1861869112
3.7027497784 3.4873669359 0.4402304745 -0.6510557237
4.3744867013 4.6639843651 -1.0369377658 2.9056673245
2.4229244494 3.4549613900 -1.1597964848 -2.4694724150

範囲指定の疑似乱数2の方は指定最大値以下というよりは(指定最大値+1)未満という感じのようです。

おわりに

いかがでしたでしょうか?なにかの参考になれば幸いです。まだほんのさわりの部分ですが、日本語プログラミング言語Mind9、ついに新バージョンがベールをぬぎはじめます!

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?