人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Delphi6で、1〜20の数字をランダムに10個(10回でも可)ダブらないように表示させるプログラムを作りたい。
プログラムのソースを教えてください。

●質問者: ktoshi
●カテゴリ:コンピュータ
✍キーワード:ソース プログラム ランダム 数字
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●10ポイント

http://www.hatena.ne.jp/awindow?

今、Delphiがインストールしてないので、確認ができません。

やり方だけ 書きます。

1.20までの配列を宣言します。 例 A(20)

2.それに 1から20まで数字を入れます。

3.1000までの乱数を発生させて それをループのマックスとします。

4.20までの乱数を2つ発生させます。

5.その 2つの乱数(例 7と13)が出たら

その 乱数の配列を入れ替えます。

dummy:=A(7)

A(7):=A(13)

A(13):=dummy

6.これらを 3で発生させた乱数の数まで行います。

終わったら、1から10までの配列の内容を

表示させればいいでしょう。

◎質問者からの返答

ありがとうございます。

最初に1〜20のそれぞれの数字が入った20個のカゴを用意しておいて、中身だけ入れ替える感じですね。ループする回数分カゴの中身を入れ替えると。ループの回数を乱数で決める理由がよくわかりませんが、なんとなく感じはつかめました。


2 ● aki73ix
●60ポイント

http://nifberry.727.net/test/hatena107.lzh

こんな感じになります

最小限のコメントをつけましたが分からなければ補足します

アルゴリズム

使っていない数字のうち、何番目のものを

使うかを指定します

判定には配列を使っています

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Label1: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Label2: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private 宣言 }

public

{ Public 宣言 }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i,j,k,l,a,b: Integer;

IChk: array[1..65536] of Integer;

//既に使用した値のチェック用

begin

Randomize;

//乱数初期化

Memo1.Lines.Clear();

//結果表示窓の初期化

a:=StrToIntDef(Edit1.Text,0);

b:=StrToIntDef(Edit2.Text,0);

// 入力値の変換

if a>65536 then

a:=65536;

if a<b then

b:=a;

// 入力値のエラーチェック

for i := 1 to a do

begin

IChk[i]:=0;

end;

// 配列初期化

j:=0;

for i := 1 to b do

begin

k:=Random(a+1-i)+1;

//箱を幾つ飛ばすか計算

l:=j;

while k>0 do

begin

if IChk[l]=0 then

Dec(k);

//使っていない箱ならカウント

if k>0 then

Inc(l);

//まだ飛ばす数が残っているなら次の箱へ

if l=a+1 then

l:=1

//配列がオーバーしたら1にもどります

end;

j:=l;

IChk[j]:=1;

//箱の使用フラグをON

Memo1.Lines.Add(IntToStr(j));

//結果出力

end;

end;

end.

◎質問者からの返答

ありがとうございます。

完璧です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ