No.6ベストアンサー
- 回答日時:
改修してみました。
同じフォルダに
STARTNO.txt
というファイルに最初に始まる番号を入力したものを準備しておいて下さい。
1から始まる時は
1
'-------------------------------------------
'コンソールから実行する時は>cscript shuffle.vbs
'STARTNO.txtに書かれている番号から、Need人数をシャッフルする
Dim fso, tso
Dim MaxNum, Need, Off, StartNo
Dim NumList
Dim i,x
MaxNum = 27 '児童の人数
Need = 20 '給食当番に必要な人数
Off = 7 '抜ける人数
Set NumList = CreateObject("Scripting.Dictionary")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set tso = fso.OpenTextFile("STARTNO.txt",1) '今回の始めの番号を読み出す
StartNo = CInt(tso.ReadLine)
tso.Close
x=StartNo
for i=0 to Need -1
NumList.Add i,x 'リストを作る
x = x + 1
if x >MaxNum then x =1
next
WScript.Echo StartNo & "から" & Need & "人"
Randomize
do until NumList.count = 0
x=Int(Need * Rnd)
if NumList.Exists(x) then
WScript.Echo NumList.Item(x)
NumList.Remove(x)
end if
loop
StartNo = (StartNo + Off) mod MaxNum
if StartNo = 0 then StartNo = MaxNum
Set tso = fso.OpenTextFile("STARTNO.txt",2) '次回の始めの番号を書き出す
tso.WriteLine(CStr(StartNo))
tso.Close
改修ありがとうございます。ここしばらく、ADSLの回線が不調で接続できなかったのですが、やっと直りました。一度、試してみます。ごめんなさい。仕事が立て込んでいて、1週間少々かかると思います。
No.5
- 回答日時:
#2補足について>
例えば1~27人が前から順番に7人抜ける(抜けて後ろに並ぶ)ということは、シャッフルする要素がないと思うのですが、
最初の1~27の並びをシャッフルで決めるといういみですか?
それとも、1週間毎にシャッフルするという意味でしょうか?
後の意味だと、勤務につく間隔が他の人より短い人がでてくるような気がするのですが、
例えば、こういう動作をして欲しいというのを具体的な(どうシャッフルが関係するのか)例をあげて説明していただけませんか?
>VBScript (私にはよくわかりませんが)が一番簡単な方法ですか?
エクセルとかを使う方法もあるかとも思いますが、
プログラム的な操作になること、
非常に限定的な要素を含むことから
フリーソフトでは、望む動作をするものが(ほとんど)ないような気がします。
なので、作らないといけないですが、
どういうソフトが動くのかという環境がわからない上では、
MSの場合98以降のOSが入っていれば使えると判断できるVBScriptを使用することにしました。
この回答への補足
こんばんは。早速の回答ありがとうございます。
私のPCは、OSがWindowsXPです。給食当番は、毎週7人ずつが1週間交代で休みます。で、当番の子20名の中で毎週シャッフルしたいのです。なぜかというと、陶器製の食器や牛乳瓶は重いので、1階から3階まで二人で運ぶのです。シャッフルしなければ、例えば、「8番の子と18番の子、9番の子と19番のというふうに、運ぶペアになる相手がいつも同じ人物に成ることが多いので、給食当番の中で、いろんな子とペアになりたい」という子どもたちからの要望があったためです。
No.4
- 回答日時:
1~43に限定されますが、ロト6用の数値シャッフルをするフリーソフトがありました。
↓
http://www.vector.co.jp/soft/dl/win95/amuse/se31 …
それから、パスワードを生成するツールですが、これも応用次第で使えませんか。(文字を数字に見立てて、など)
↓
http://www.vector.co.jp/soft/win95/util/se161038 …
No.3
- 回答日時:
#2>チンプンカンプンなんです
まず、「スタートメニュー」から
「すべてのプログラム」~「アクセサリ」~「コマンドプロンプト」
を選んで下さい。
黒いウインドウが開くはずです。
一番上の方に今開いているフォルダ名が表示されているはずです。
次に、
エクスプローラからその表示されているフォルダに移動して、フォルダの中で右クリックして「新規作成」~「テキストドキュメント」で新しいテキストファイルを作って下さい。
名前が青くなっている処で(あるいは、F2キーを押して) shuffle.vbs に名前を変更して下さい。(拡張子は普段表示されるようになっていますか?)
警告されると思いますが、OKして名前の変更を完了します。
すると、字の書かれたような青い巻物みたいなアイコンになるはずです。
それを、右クリックして「編集」を選んで下さい。
メモ帳が開くはずです。
そこに、
#2の回答の切取線以下の部分をコピーして貼り付けて下さい。
張り付けできたら、上書き保存してメモ帳を終了します。
次に、
もとのコマンドプロンプトに戻って画面をクリックして下さい。
そこで、
cscript shuffle.vbs
とタイプして、ENTERキーを押して下さい。
プログラムを実行することができます。
プログラムが見つからないとかそういうメッセージが出る場合その起動したフォルダにないかもしれません。
dir
とタイプして、ファイルの一覧から shuffle.vbs
があることを確認して下さい。(ない場合は、そのフォルダを最初の手順でもう一度確認して下さい。)
いったん、shuffle.vbs を作成できたら
ダブルクリックしても実行することもできます。
動作はちょっと変わります。
No.2
- 回答日時:
とりあえず、作ってみました。
以下の部分をshuffle.vbsとでも名前を付けて保存し
ダブルクリックするか
コマンドプロンプトで
>cscript shuffle.vbs
として下さい。
コマンドプロンプトの場合、
>cscript shuffle.vbs >data.txt
とでもすることで出力をファイルに保存することができます。
'-----------------------切り取り線--------------
'1から指定された数字までをランダムに表示する
'コンソールから実行する時は>cscript shuffle.vbs
Dim MaxNum
Dim NumList
Dim i,x
Set NumList = CreateObject("Scripting.Dictionary")
MaxNum=InputBox("1から指定された数字までの数字をシャッフルして書き出します" & vbCRLF & "数字を入力して下さい")
for i=1 to MaxNum
NumList.Add i,i
next
Randomize
do until NumList.count = 0
x=Int((MaxNum * Rnd) + 1)
if NumList.Exists(x) then
WScript.Echo NumList.Item(x)
NumList.Remove(x)
end if
loop
この回答への補足
こんばんは。動かなかったので、下記のようにしてみたら動きました。
<引用から修正>
'1から指定された数字までをランダムに表示する
'コンソールから実行する時は >cscript shuffle.vbs
Dim MaxNum
Dim NumList
Dim i,x
Set NumList = CreateObject("Scripting.Dictionary")
MaxNum=InputBox("1から指定された数字までの数字をシャッフルして書き出します") & vbCRLF & (x)
for i=1 to MaxNum
NumList.Add i,i
next
Randomize
do until NumList.count = 0
x=Int((MaxNum * Rnd) + 1)
if NumList.Exists(x) then
WScript.Echo NumList.Item(x)
NumList.Remove(x)
end if
loop
<以下、追加質問です>
私は、小学校教員ですが、給食当番の係りの児童の番号をシャッフルしたくて、前回質問しました。
クラスの子は27名です。給食用エレベーターがないので、給食当番は20名必要なんです。1週間交代です。1番の子から20番の子までが今週の当番。翌週は、最初の7人が抜けて8番~27番が担当。その次の週は、8~14が抜けて、15番~27番と1番~7番の20名。その次は、15~21が抜けて、22~27と1~14の20名。というふうに、7人ずつぬけてグルグル回っていきます。今年は27名の児童数ですが、来年度は人数が増えるか減るかわかりません。少しややこしいですが、このような場合でもできるでしょうか?
VBScript (私にはよくわかりませんが)が一番簡単な方法ですか?
回答ありがとうございました。せっかく回答いただいたのに、>cscript shuffle.vbsの意味がまったくわかりません。コンソールって意味もわかりません。作っていただいたものは、何を使うのですか?メモ帳ですか?チンプンカンプンなんです。ごめんなさい。
No.1
- 回答日時:
「行単位で並び替える」エディタやエクセル等の表作成ソフトがあれば、一度、
1
2
3
4
のように入力するか、1文字ごとに改行コードをつけておき、
2
4
1
3
のようにランダムに処理してから改行コードを外すといいう方法が思いつきます。
テキストファイルソータはそういうソフトのひとつです。
参考URL:http://www.magictory.com/main/soft/softs.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 郵便番号順に並び変えたい 同じ番号が複数あるとき 4 2022/04/28 18:35
- その他(Microsoft Office) 逆順 3 2023/08/24 09:30
- Excel(エクセル) 【エクセル】並び替えからの並び替え方法 7 2022/07/22 09:46
- その他(悩み相談・人生相談) 以下の中から付き合う、結婚するときに嫌だなー思うものから順番に並べ替えてください。 1.ブサイク 2 3 2022/06/07 08:45
- 恋愛・人間関係トーク 以下の中から付き合う、結婚するときに嫌だなー思うものから順番に並べ替えてください。 1.ブサイク 2 1 2022/06/07 16:21
- Excel(エクセル) エクセルについて 6 2022/11/29 14:07
- その他(悩み相談・人生相談) 以下の中から付き合う、結婚するときに嫌だなーと思うものから順番に並べ替えてください。 1.ブサイク 2 2022/08/08 19:34
- その他(悩み相談・人生相談) 以下の中から付き合う、結婚するときに嫌だなー思うものから順番に並べ替えてください。 1.ブサイク 2 3 2022/06/06 18:33
- 数学 円周率について。 3 2023/01/26 15:10
- 恋愛・人間関係トーク 以下の中から付き合う、結婚するときに重要だと思うものから順番に並べ替えてください。 1.顔 2.身長 1 2022/04/12 19:40
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
画像・動画データを日付毎のフ...
-
PCのアプリケーションを別のPC...
-
leeyesでファイルの読み込みが...
-
virualboxで仮想マシンフォルダ...
-
パソコンのフォルダー内のファ...
-
名前の変更ができない動画ファイル
-
ビルダーを使ってますがパソコ...
-
バッチファイルでサーバーのフ...
-
一括でフォルダと同じ名前にフ...
-
スナップインを作成できません...
-
フォルダ間バイナリファイル比...
-
x-アプリのMD取り込みエラーに...
-
pod野郎の使い方がわかりません。
-
ファイルのサイズを0にする or ...
-
1つのフォルダの中にflacとmp3...
-
複数のフォルダーに同じファイ...
-
拡張子が異なりファイル名が同...
-
一太郎がイントラで開けません...
-
「ファイルがオープンできませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のフォルダからひとつのフ...
-
一太郎がイントラで開けません...
-
PCのアプリケーションを別のPC...
-
パソコンのフォルダー内のファ...
-
binフォルダーとは?
-
バッチファイルでサーバーのフ...
-
virualboxで仮想マシンフォルダ...
-
一括でフォルダと同じ名前にフ...
-
コマンドプロンプトでフォルダ...
-
Thunderbirdで社内共有フォルダ...
-
win10の「フォト」で、「次へ」...
-
ビルダーを使ってますがパソコ...
-
ファイルのサイズを0にする or ...
-
名前の変更ができない動画ファイル
-
同名のフォルダを検索・削除したい
-
「ファイルがオープンできませ...
-
一定のファイル数ごとにフォル...
-
特定フォルダ内のファイルを自...
-
複数のフォルダに複数のファイ...
-
拡張子が異なりファイル名が同...
おすすめ情報