[過去ログ] ■ LiveMaker スレッド6 ■ (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
317
(4): 名前は開発中のものです。 [sage] 2012/10/15(月) 19:35:56.76 ID:nF54SIzW(1) AAS
数字を重複せずランダムに配列変数に収納するにはどうやればいいのかな?

n[]==7,6,1,5,3,0,2,8,4,9

みたいな感じにしたいんだけど
SortStr使ってもちょっとしか入れ替わらないし
Random使って一個ずつ入れると重複する…
319
(3): 名前は開発中のものです。 [sage] 2012/10/15(月) 22:12:18.92 ID:9kkaInC7(1/2) AAS
>>317
あくまでも参考までに。

ループ 初期化:i = 0 条件:i < 10 ループ時:(なし)
p = Random(10)
IF n[p] == -1
n[p] = i
i = i+1

配列n[]は-1で初期化してる前提です。
効率悪いけど、10個程度ならネックにならないかと。
LiveMakerの文法間違ってたらすみません。
322
(1): 名前は開発中のものです。 [sage] 2012/10/16(火) 08:31:52.75 ID:uVECYogp(1/3) AAS
>>317
配列の中身が0〜9で固定なら、互いの変数内容を交換(スワップ)する。
livemakerにはswap関数がないからループと仮受変数で対処。
○初期設定
n[]……配列
a……仮受整数変数
i……ループカウンタ
r……乱数受け取り整数変数
初期にn[0]〜n[9]にそれぞれ0〜9の数値を入れておく

○数値交換の計算ノード
ループ 初期化:i = 0 条件:i < 10
r = Random(10)   ……ランダムで配列の番号を決める
a = n[i]   ……仮受aにn[i]の内容を保存
n[i] = n[r]  ……n[i]にn[r]の内容を代入
n[r] = a   ……n[r]にaの内容を代入して交換終了
326: 317 [sage] 2012/10/16(火) 20:14:27.50 ID:I6lHdCVg(2/2) AAS
>>318も参考にさせてもらって
こんな感じで取得した数字をフラグで管理したらできました

ループ 初期化:i=0 条件:i<10 ループ時:(なし)
  p=Random(10)
  IF s[p]==TRUE
    ループ先頭へ
  n[i]=p
  s[p]=TRUE
  i=i+1(ループ時に設定するとIFで戻ったときにうまくいかなかったので)

フラグ管理する変数のサイズをランダム数値の上限に増やしたら
n[]==3,6,22,20,14,9,23,19,27,13 という感じにもできました
実行制御使うとこんなに楽になるんですね
なんか世界が変わった
328: 317 [sage] 2012/10/17(水) 23:00:52.42 ID:GLeOnAVx(1) AAS
>>327
実際の処理には特に違いはなかったですけど
IndexOfStrの使い方を知ったおかげで変数リストと式が少しすっきりしました
ありがとうございます
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s