トップページ⇒tech
993コメント374KB

VB初心者質問スレ Part4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
VB初心者質問スレPart3
http://pc.2ch.net/test/read.cgi/tech/1000523122/
0449431NGNG
>>448
14パズルっていうのは聞いたこと無いです。
解くっていうのは、解くプログラムを作るっていうことですか?

だとすると、まず数学的に解く必要がありそうです。
0450VB使いNGNG
>>447
XPでも動きます。
0451デフォルトの名無しさんNGNG
>448
15パズルの局面数は、(16!/2)通り≒10 の13 乗。
まず、8パズルぐらいからやってみろ。 (9!/2)= 181440個
0452デフォルトの名無しさんNGNG
>>449
14⇔15パズル、しらない?
0453 NGNG
14・15パズルってこれ?
http://www.incl.ne.jp/~hotcake/puzz15.htm
0454デフォルトの名無しさんNGNG
14-15パズルって、15パズルの14と15を入れかえる問題。
0455デフォルトの名無しさんNGNG
すいません、空のファイルを作りたいんですけど
本とか見てもどうもサッパリなんです。

どなたかお教授を・・・
0456デフォルトの名無しさんNGNG
openだかなんかを宣言した時点で空(0BYTEの)のFILEが作られます。
指定した容量の空のFILEなら知りません。
0457VB使いNGNG
>>455
0で埋めたいんならRedimかDimで好きな大きさのByte配列を宣言して
Open後Put#で書き込む。
0458デフォルトの名無しさんNGNG
ソートについて勉強しているんですが、それについての質問です。
一度にすべてのデータをメモリに展開できないほど大きなデータがあったとして、
(たとえば100MBくらいで、中身は数値) これをソートするにはどうしたらいいのでしょうか。

少しずつ読み込んでソートしても、結局読み込んだ分の中でしかソートできず
全体としてのソートになりません。
そのような場合の考え方を教えていただければと思います。
0459デフォルトの名無しさんNGNG
レコード長つーか、データ1この大きさと比較するキーの大きさによるな。
たとえば、100MBのデータが50MBのデータ2個で、先頭の1バイトで比較できるなら…
100バイトのデータ1M個で、100バイト全部比較しないと順序が決まらないなら…
2バイトのデータ50M個で、数値として比較できるなら…
0460VB使いNGNG
>>458
メモリの代わりにハードディスク使うってのはどう?
0461デフォルトの名無しさんNGNG
>>458
読めるだけ読んで -> ソート -> 一時ファイルに出力
を繰り返した後、一時ファイルをマージでどうでしょう?

#でかいデータならデータベースに格納した方がいいかもしれませんが。
0462デフォルトの名無しさんNGNG
関係ないけど今祭りやってるね。

【米TIME紙】田代を投票で世界一にしよう!!!

みんなそっち行ってるの?
0463デフォルトの名無しさんNGNG
>>458
固定長レコードのファイルなら、Putステートメント、Getステート
メントを使って隣り合った前後のレコードを読んで比較してシーク
して書き込んで・・・ってできないかい?バブルソートならロジッ
クはすこぶる簡単。
処理遅いけど。100Mだったら即死だな。DLLだけCで作ると
か・・・?
0464458NGNG
色々ありがとうございます。
とりあえず今練習で使っているファイルには、ランダムな9桁までの正の整数が
1行に1つずつ格納しています。なので固定長ではありません。

あくまでデカ過ぎるファイルのソートについての勉強ですので、メモリではなく
HDに展開というのはダメなんです。100MBというのもたとえなので、1000GBの
データと考えてもいいです
やはりなかなか難しいものなんですね。
0465デフォルトの名無しさんNGNG
FuncA という関数から FuncB という関数が呼ばれているとします。
FuncB で起こった実行時エラーや Err.Raise で起こしたエラーを
FuncA の On Error GoTo 〜 で検出したいのですが、うまくいきません。
どうすればよいのでしょうか?

言い換えると、FuncB 内で起こったエラーを引数や戻り値で
検出するのではなく、On Error GoTo 〜 ですべて統一的に処理したいのです。

MSDN のガイドラインには引数、戻り値、On Error のどれかに統一すべきとあったので
可能だとは思うのですが・・

質問の真意、伝わったかちょっと心配ですが、
よろしくお願いします。
0466VB使いNGNG
>>465
FuncBでエラートラップしなかったら呼び出し元(FuncA)の
エラートラップに引っかかるはずだけど・・・
意味違うか?
0467デフォルトの名無しさんNGNG
>>458
9桁の整数なら、1,000,000,000バイトのファイル作って、それをカウンタにするのがいいのかな。
もっと少ない、たとえば4桁とか5桁の整数なら、メモリに配列とってカウンタにしてもいいけど。
整数の場合、ソートするっつか、どの数字が何回出てきたかを数えるほうを考えてみては?
0468デフォルトの名無しさんNGNG
>>458
100Mくらいなら、よみこめるんじゃないの?
スワップしまくりだろうけど、とりあえず動くでしょ。
0469デフォルトの名無しさんNGNG
>>458
ファイルを1行ずつ順に読んで一番小さなものを
ワークファイルに書き出し
また、ファイルを1行ずつ順によんで前回の一番小さい値より
大きくて、それ以外の中では一番小さい値を
ワークファイルに書き出し
あとは、繰り返し
遅いけど、できるね。
0470デフォルトの名無しさんNGNG
あと、でかいファイルのソートっていっても、レコードが長くて、
順序付けするときに比較するデータが小さい場合は、
メモリに比較するデータへのファイルポインタと比較するデータだけ
読み込んで、それをソートするっていう手もある。
0471デフォルトの名無しさんNGNG
>>464
>HDに展開というのはダメなんです
メモリに入らないんなら、HDD上でやるしかないと思うのですが。
0472デフォルトの名無しさんNGNG
>>466 さん
ふと気付いたことがあって、実験してみました。
Module1 と Class1 を用意して、
以下のコードを貼り付けて実行してみてください。
IsModule の値が True と False で結果が変わってしまいます。
なぜなんでしょうか?
0473デフォルトの名無しさんNGNG
>>472 のサンプルプルグラム

+++Module1+++ココカラ
Private Const IsModule As Boolean = True

Sub Main()

FuncA

End Sub

Function FuncA()

Dim clsC As Class1

On Error GoTo ErrorHandler

Set clsC = New Class1

If IsModule Then
FuncB
Else
clsC.FuncC
End If

ErrorHandler:
MsgBox Err.Number & " " & Err.Source

End Function

Function FuncB()

Dim lngFoo As Long

On Error GoTo ErrorHandler

lngFoo = ""

ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"

End Function
---Module1---ココマデ

+++Class1+++ココカラ
Function FuncC()

Dim lngFoo As Long

On Error GoTo ErrorHandler

lngFoo = ""

ErrorHandler:
Err.Raise vbObjectError + 512, "FuncB"

End Function
---Class1---ココマデ
0474デフォルトの名無しさんNGNG
>>473 はスペースミスってしまいました。

+++Module1+++ココカラ
Private Const IsModule As Boolean = True

Sub Main()

  FuncA

End Sub

Function FuncA()

  Dim clsC As Class1

On Error GoTo ErrorHandler

  Set clsC = New Class1

  If IsModule Then
    FuncB
  Else
    clsC.FuncC
  End If

ErrorHandler:
  MsgBox Err.Number & " " & Err.Source

End Function

Function FuncB()

  Dim lngFoo As Long

On Error GoTo ErrorHandler

  lngFoo = ""

ErrorHandler:
  Err.Raise vbObjectError + 512, "FuncB"

End Function
---Module1---ココマデ

+++Class1+++ココカラ
Function FuncC()

  Dim lngFoo As Long

On Error GoTo ErrorHandler

  lngFoo = ""

ErrorHandler:
  Err.Raise vbObjectError + 512, "FuncB"

End Function
---Class1---ココマデ
0475デフォルトの名無しさんNGNG
画面に2つのコンボボックスがあり、
この2つをADO経由でグループ化させたいのですが
何か良い方法はないでしょうか?(VBAなら コンボ0.RowSource="SQL文" )

画面のコンボ1を選択すると
コンボ2には、あ1、あ2、あ3とグループ表示されます

コンボ1 あ
コンボ2 あ1
     あ2
     あ3

テーブルの定義は

フィールド1 フィールド2
あ      あ1
あ      あ2
あ      あ3

い      い1
い      い2
い      い3

となっています
0476475NGNG
プログラムはコンボ1のセット部分だけ動きました
コンボ2は×でした

Dim itm As Variant
Dim col As Collection
Dim SQL As String
Dim strTmp As String

'コンボボックス定義
SQL = "SELECT " & TBL_コンボ_フィールド1 & " FROM " & TBL_コンボ _
& " GROUP BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 _
& " ORDER BY " & TBL_コンボ & "." & TBL_コンボ_フィールド1 & " DESC"
Set col = pclsCLS_RSAccess.RS_CmbSetting(SQL, TBL_コンボ_フィールド1)
For Each itm In col
strTmp = itm("Strg")
Cmb_Name(0).AddItem strTmp
Next
Cmb_Name(0).ListIndex = 0 <−−− コンボ1


Public Function RS_CmbSetting(ByVal SQL As String, _
ByVal strName As String) As Collection
Dim rs_01 As Recordset
On Error GoTo RS_CmbSetting_Err

      略

Do Until rs_01.EOF
RS_CmbSetting.Add AddItem(rs_01(strName))
rs_01.MoveNext
Loop

      略

End Function
0477VB使いNGNG
>>472-474
まさかとは思うが、エラートラップの所「クラスモジュールで中断」のままにしてないよな?
「エラー処理対象外で中断」にしてるよな?

俺のとこはまったく同じになったけど。
0478デフォルトの名無しさんNGNG
漏れ、466じゃないんだけどさ
>>472
オプションの[全般]タブの[エラートラップ]を
「エラー処理対象外のエラーで中断」に変更してみそ
0479478NGNG
Σ(゚д゚lll)ガーン
もうあったのか・・・
0480デフォルトの名無しさんNGNG
>>477
>>478
Σ(゚д゚lll)ガーン
まさに其の通りでした・・・
ありがとでした。
0481デフォルトの名無しさんNGNG
SelTextで、入力させた文を改行させるにはど〜したらいいですか?

Text.SelText=& Chr(34) & "うわーん" & vblf & "うわーん" & Chr(34) &
だと、表示が
"うわーん・うわーん"
               になってしまう

それを

"うわーん
うわーん"

にしたい。
0482480NGNG
あの、関連したことでもひとつ質問よいでしょうか?

Func1 から Func2 を呼び、Func2 から Func3 を呼んでいるとき、
Func3 で起こった実行時エラーや Err.Raise で起こしたエラーを
Func1 の On Error GoTo 〜 で検出できるのでしょうか?

' 今、ちょうどエラー処理関係を作っている最中でして、
' エラー処理を最上位関数で一括処理をしたいと考えているのです。
' もしかすると無謀なことなんでしょうか?
0483ヒッキー@プログラミングNGNG
>>481
"うわーん" & vbCrLf & "うわーん"
0484480NGNG
>>481
vblf → vbNewLine でいけるかと!
0485デフォルトの名無しさんNGNG
>>483
>>484
おぁー、両方で出来ました!
どうもありがとう。
0486デフォルトの名無しさんNGNG
>>481
 ちなみにわざわざ Chr(34) ってしなくてもダブルクォーテーション
重ねてもいいYO。見難くなくけど。。。

ex...
Text.SelText= """うわーん" & vbCrLf & "うわーん"""
0487VB使いNGNG
>>482
できるよー。
でも一括処理は細かいエラートラップがしづらいしAPIのエラー処理と
別のやり方になるんで俺はめんどくさいと思う。

あと、エラー処理について詳しく知りたいなら
MSDNの「プログラミングガイド」→「コードのデバッグおよびエラー処理」か
http://www.microsoft.com/japan/developer/library/vbcon98/vbcondebuggingyourcodehandlingerrors.htm
ここをご覧あれ。
0488デフォルトの名無しさんNGNG
いつも思うけど、2chで最もやさしい人間の集うスレだなぁ。
0489VB使いNGNG
>>464
結局答え出た?もし答えがあるならレスキボンヌ。プログラマーとして知っておきたい。
0490デフォルトの名無しさんNGNG
ユーザー定義型をCOMに渡すのはどうすればいいんですか?
var型に変換できないYO〜
0491デフォルトの名無しさんNGNG
WordのVBAなのですが、

'全選択
wdApp.Selection.WholeStory

strBuf = wdApp.Selection.Text

というように、

Docファイルの中身を全選択し、Docファイルの中身を全て取得したいのですが。
テキストボックスの中身の値は取得できません。
どうすればできますか?

ActiveDocument.Shapes("Text Box 1").Select
をしてできなくはないのですが、
VBからDocファイルを非表示で開いているので、
使えないのです。
よろしくお願いします。
0492初心者NGNG
質問です。

最初に問題数を自分で選択できるクイズ形式のプログラムを作ろうと
思っています。問題数を選んだ後、約20の問題(フォームはバラバラ)
からランダムに問題を抽出して、回答していき最後に結果出力をしよう
と思うのですが、全体の構成はどのようにしたらいいのでしょうか?

プロジェクトファイル
  フォーム(トップ)
  フォーム(選択画面)
  フォーム(問題1)
  フォーム(問題2)
  ・・・
  フォーム(問題20)
  フォーム(結果出力)
  標準モジュール

という感じでいいのでしょうか?
それともフォルダ(?)のような役割を果たしてくれるものが
あるのでしょうか?あとランダムの発生の仕方も含めてわかりません。
0493初心者NGNG
追加です。

トップから次のフォームに行くのに、前のフォームを消したいのですが
一つ目から二つ目にいくのに

Dim X As New Form2
X.Show
Form1.Visible = False

は、うまくいくのに次の

Dim X As New Form3
X.Show
Form2.Visible = False

は、うまくいきません。
フォーム2が消えません。
どうすればいいのでしょうか?
それとえ、そのようなケースの場合、最も一般的な
やり方をおしえてください。お願いします。
0494VB厨@入門約半年NGNG
>>492
何故フォーム20個なの?それはナゼなの??
クイズはテキストなの?絵が必要なの?どうなの?

ランダム(乱数発生)は Rnd関数 よ!
使う前にRandomize文が必要なのは
N88-BASIC(だったっけ?)を厨学生の時に見たのと同じだわ!

あと、このレベルの質問は「プロの人たち」が見ると痒いみたいだから
sage進行でこっそりやりましょ!
0495デフォルトの名無しさんNGNG
>492
フォームは3個でいい。できれば1個にしとけ!
メモリ解放のやり方とか知らないだろうから、
メモリリークの元になる。
0496初心者NGNG
>>494>>495
はい、画像使います。
20個いらないんですか?
どうやればいいのでしょう?

ちなみに参考書は
「新visual basic 入門」です。
メモリ解放というのは載っていませんでした。
あと、rnd関数というのもなかったです。
0497VB厨@入門約半年 NGNG
>>496
フォームは1個目がイラッシャイで問題数設定で
2個目に、問題を入れ替えながら表示させて
3個目に成績を表示させる、って方針で3個が良さげ。

From2が表示される→第1問→回答ボタン押される→正誤の判定
→メッセージボックスで正誤表示→メッセージボックスOKでForm2に第2問を表示→
→回答ボタン押される→正誤の判定
っつー流れで、Form2だけで問題数の分だけ繰り返す。

あと、その本だけに頼るのはヨセ。VBのヘルプも見れ。
netの検索も良い。同じ目的のサンプルがあたったりして(゚д゚)ウマー
0498デフォルトの名無しさんNGNG
リストボックスで質問です。
スタイルをチェックボックスにしたものを
自動でチェック付けたり消したりをしたいのです。

実際には、あるファイルのリスト一覧を表示して存在してるかを判断し、
存在してるものにはチェックを入れ、存在してないものはチェック無しとしたいのです。

List1.List(0).Checked = True みたいな感じなコマンド無いでしょうか?
0499デフォルトの名無しさんNGNG
>>498
List1.Selected(0) = True
0500デフォルトの名無しさんNGNG
VBスクリプト(.vbsファイル)で質問です。
DOSのバッチからvbsを呼び出しているのですが、
WScript.Quit (x)
でxに値を入れても、常に%ERRORLEVEL%が0になってしまいます。
vbsから%ERRORLEVEL%を0にする(バッチに何らかの値を返す)方法はないのでしょうか?
ちなみにvbs内部で環境変数としてERRORLEVELの値を変更してみたのですが、
DOSバッチには引き継がれないようです。
よろしくお願いします。
0501デフォルトの名無しさんNGNG

>>497
画像とかテキストボックスを一つ設定して、その中に
はじめはインビジブル設定にして
その都度、呼び出すということでよろしいのでしょうか?
画像は開発段階では乱立してしまうと思いますが
そういうことでしょうか?

あと、ヘルプがなんかみれません(><)
MSCD(みたいなの?)が必要って言われます。

取り合えず、今日の昼休みに本屋でいろいろ立ち
読んできます。
0502デフォルトの名無しさんNGNG
>>501
必要だって言われているんだから入れりゃ良いだろ。>ヘルプ

http://www.microsoft.com/japan/developer/library/default.asp
から辿っても良いが。
0503sageNGNG
とりあえずVBやりたいという奴がいてそいつに何かいい本ない?と聞かれたので
Microsoft Visual Basic6.0 ProfessionalステップバイステップVOL.1 日経BPソフトプレス 2500円
を勧めてやりました。
かくいう私自身がこれとVOL2の活用編の2冊でだいたいの事ができるようになったし
VBについてまったく何も知らなかった私にもわかるように書いてあったので
勧めたのですが友人はダメみたいでした。友人曰く「難しすぎるっ!」そうです。
こんな友人にはどうすればいいのでしょうか?もっとわかりやすい本を薦める(これ以上初心者向けの本はしりませんが…)
VBを諦めさせるのどちらかを考えてます。
どちらがいいと思いますか?
0504デフォルトの名無しさんNGNG
>>503
「読書百遍(ひゃっぺん)義(ぎ)自(おのずか)ら見る」 って言葉を送るとか(藁


ちなみに「読書百篇 意 自ずから通ず」って覚えてたけど間違ってたのか...
0505デフォルトの名無しさんNGNG
VBをはじめて1ヶ月の超初心者です。
VB6でACCESS2000のDBを使用したかったので、SP5をインストールしようと
しているのですが、うまくいきません。
セットアップは正常終了するのですが、実際にはパッチがあたって
いないようです。

おそらくSETUP.STRをインストーラが見つけ出せないのが原因と思われます。

「sp598ent.stf を、本来 stf ファイルがあるべきディレクトリにコピーします。
次に、コピーしたファイルの名前を setup.stf に変更し、Service Pack 5 の
インストールプログラム (setupsp5.exe) を再び実行します。」

と、readmeに書かれているのですが、sp598ent.strというファイルが
ダウンロードした中に見当たりません。
環境はWindows2000(SP2)です。
初心者の質問ですいませんが、できれば教えてください。
0506デフォルトの名無しさんNGNG
アドレスちょ〜(*.wav)のインポート方法誰か知らない?
0507デフォルトの名無しさんNGNG
>>503
あるとしたら雑誌の扱いだと思うんだけど
真黄色の表紙の「Visual Basic スーパービギナー」ってのが
インストール開発画面の操作から始まってる、超初心者対象の本。
でっかくて見やすそうだったし。1500¥と安いし。
本の最後に用語集とかあるし
パソコン初心者レベルから、ってのならよいかも。

#ガッコの書籍部に3ヶ月ほどず〜っとある。。。
0508デフォルトの名無しさんNGNG
>>503
VB以上に簡単な言語はない。
そういつが頭わりぃだけ。
殴っとけ。
0509デフォルトの名無しさんNGNG
マイクから入力した音声をバイナリデータとして扱いたいのですが、
どんな関数を使ったらいいのでしょうか?参考書籍とかあったら教え
てください。よろしくおねがいします
0510デフォルトの名無しさんNGNG
Dim a As Integer
Dim b As Integer

a = b = 0

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

がなぜa = -1, b = 0になるんでしょうか?
わーからなぁーいぃー♪
0511デフォルトの名無しさんNGNG
>510
 ネタでも答えてみるか。
 まず b は宣言されて初期値が 0 だから b は 0 。
 そんで a には b = 0 を評価した値 True (= -1) が入っている。
 試しに a = b = 0 の前に b = 10 とかやってみれ。
0512VB使いNGNG
>>509
まあ、MCIが一番いいかと。
http://www.google.com/search?q=mci+api+Basic+%98%5E%89%B9&hl=ja
検索してみたんですきなものをどうぞ。
パワフルテクニック・・・が個人的に好き。VB6のやつもあったはず。

>>506
CSV使っとけ。

>>510
a=(b=0)
0513デフォルトの名無しさんNGNG
>>511
trueって-1なのか!
にゃーるほーどねぇー。
0514デフォルトの名無しさんNGNG
論理notと算術notが同じ結果になるからね
0515509NGNG
>>512 VB使いさん
ありがとうございます!早速やってみます
お世話になりました
0516デフォルトの名無しさんNGNG
>>513
 ネタでも答えてみるか。
 必ずしも True = -1 ではない。
 True は 0 以外ならなんでも True。逆に False は絶対 0。
 ex...
 CBool(1)
CBool(999)
 CBool(-555)
 これ全部 True 。
0517デフォルトの名無しさんNGNG
Trueが-1なのと0以外は真なのを、わけて考えようぜ
0518516NGNG
補足:
 CInt(True)ってやると -1 が帰ってくるが、
 これがVBでの True の デフォルト値?なだけ?
0519516NGNG
>>517
 同意。軽はずみだったかも。
 -1 は True、0 は False。それ以外は False 以外。
 つまり Boolean型は True/False しか表せないので、
 False 以外で True を返しちまえっていう
 CBool関数の仕様なのかも。。。ゴメソ。
0520ageNGNG
age
0521デフォルトの名無しさんNGNG
>>499
ありがとうございます。
調べる力が欠けてました(汗
0522デフォルトの名無しさんNGNG
>505
エンタープライズ版のVB6使ってる?

>518
ほかの言語だと、True=1だったりする。
たしかVBでもバージョンによって違ってたり。
0523関係ないけどNGNG
友人にVBより簡単な言語ない?って聞かれました…
その時とても鬱な気分になりました。
私はHTMLでもやれば?と言ったら馬鹿にしてるのかっ!って逆ギレされました。
HTMLを言語というのかどうかは分かりませんが俺の中ではHTMLとVBの難しさは同レベルなのですが
VBより簡単な言語ってあります?
0524 NGNG
>>523
ひまわり

HTMLのLは言語のL
0525VB使いNGNG
>>523
ぴゅう太
0526デフォルトの名無しさんNGNG
>523
マシン語でも勧めてやれよ。
言語仕様はこれが一番簡単だよって(ワラ
0527デフォルトの名無しさんNGNG
>523
ファミリーベーシック
0528デフォルトの名無しさんNGNG
CXBXL
0529VB使いNGNG
>>523
アセンブラ。(半分マジ)
簡単さの意味が違うが結構ハマるかも。
0530ひどいよマイクロソフトNGNG
そんな君達にDelphiです。
フリーで試せるし。
0531俺だけじゃないよねNGNG
今日会社の結構偉い人(こいつはろくにメールも出せない)に
「君は本を見ないとプログラムもできんのかね?」
と言われた。
まさかコマンドを全て覚えるなんて不可能だろうし…
もしかしてみんなはプログラムとか組むときに本とか全然見ずに
書いてる?
0532VB使いNGNG
>>531
MSDNは見る。APIなんか全部覚えられんよ。
0533デフォルトの名無しさんNGNG
つか、リファレンスは誰でも見るでしょ。
まぁ本だとコピペとかできないし邪魔だから、基本的にオンラインヘルプ
だけど。
0534デフォルトの名無しさんNGNG
>>531
逆に覚えてる奴ってやばい気がする。
「こんなのがあったな」ってのを覚えておけば十分だろ
0535デフォルトの名無しさんNGNG
たまにいるよな。関数マニア(藁
0536デフォルトの名無しさんNGNG
リファレンスとかが1つのCDに納められてるものとかないの?
0537デフォルトの名無しさんNGNG
そりゃもちろん全部覚えていて使いこなせるのが理想だが
こんなのがあったなってのを覚えておいて
それを書籍なりMSDNあたりから探せる能力があればいい。
0538デフォルトの名無しさんNGNG
>537
確かにな…
中途半端に覚えていて適当に無理だと判断するより
ちゃんと検索してさがせる能力があったほうがいいです
0539デフォルトの名無しさんNGNG
>>531
その人晒し上げ
0540デフォルトの名無しさんNGNG
1〜15の中から5つ適当に選ぶ関数はどのように記述すればいいのでしょうか?
どなたかおしえていただけないでしょうか?
0541デフォルトの名無しさんNGNG
>>540
重複していいの?
0542デフォルトの名無しさんNGNG
ダメでお願いします。
0543デフォルトの名無しさんNGNG
>540
いくら初心者質問スレとは言っても検索くらいはしたよね?
0544デフォルトの名無しさんNGNG
しました。
これだと、重複アリですよね?
ナシのときがちょっとわからなくて・・・

Rnd 関数の使用例
次の例は、Rnd 関数を使って、1 から 6 までの乱数整数を発生させます。

Dim MyValue
MyValue = Int((6 * Rnd) + 1) ' 1 から 6 までの乱数整数を発生させます。


--------------------------------------------------------------------------------
http://www.microsoft.com/JAPAN/developer/library/Vbenlr98/vafctrndx.htm
0545デフォルトの名無しさんNGNG
>>540
こう言うアルゴリズムを自分で考えることで力がつくんだと思うYO
どうでもいいけど。
0546デフォルトの名無しさんNGNG
n = 5; m = 15;
for(i = 1; i <= 15; i++){
 if(乱数() < n/m){ // 乱数()は0から1を出力
  // iを選択。
  選択(i);
  n = n - 1;
 }
 m = m - 1;
}

VBよく知らないけど、
C風に書けばこんな感じでできると思う。
0547仕様書無しさんNGNG
>>540
重複したら捨てる(w
以上
0548デフォルトの名無しさんNGNG
>540
1〜15をいったん配列に入れて、シャッフルすれば、重複しない。
■ このスレッドは過去ログ倉庫に格納されています