エクセルで発生させた乱数をその都度データとして残す方法教えてください。たとえばエクセル内で10回乱数を発生させてその10回分のデータを表に記録して残したいのですが・・・。何かいい方法ありますか?もちろん、関数を使ってですけど。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは



 実際におやりになりたいことが、まだよくわかっていませんが...

 nishi6さんの

For rw = 1 To 10
 'セルA1~A10の値をB1~B10に書く
 Cells(rw, 2).Value = Cells(rw, 1).Value
Next

の部分については、

Range("B1:B10").Value = Range("A1:A10").Value

というふうに書くこともできます。

参考URL:http://www2.odn.ne.jp/excel/
    • good
    • 0

アクセスはいいけどコピーはしたくないということがよくわかりませんが、アクセスを使ってもいいということなので、VBAを使ってもいい?


シートの計算方法を手動にしておけば、再計算のタイミングでA1~A10の乱数を数値としてB1~B10に書き出します。再計算はF9です。
下記モジュールをシートのコードウインドウに貼り付けます。
ご参考に。

'*** 乱数の固定(A1~A10をB1~B10に書く) ***
'    シートの計算方法を手動にしておく
Private Sub Worksheet_Calculate()
  Dim rw As Long '行カウンタ

  On Error GoTo ErrorHandler '何かエラーが起きた場合の処理

  Application.EnableEvents = False 'イベントを発生させない
  For rw = 1 To 10
    'セルA1~A10の値をB1~B10に書く
    Cells(rw, 2).Value = Cells(rw, 1).Value
  Next
  Application.EnableEvents = True 'イベントを発生させる

  Exit Sub
ErrorHandler:
  '何かエラーが起きたらイベント発生させるように戻す
  Application.EnableEvents = True
End Sub
    • good
    • 0

RAND()のままだと再計算で値が変わるので、固定したいということですか?


関数とか何も使いませんが、moto_misaさんの意図したこととあっていればいいんですが。

ツール→オプションで計算方法を手動にします。
発生させた乱数をコピーして任意の場所に、『形式を選択して貼り付け』の『値』を実行します。これで、乱数が値になります。
新しい乱数を発生させるにはファンクションキーF9を押します。

ご参考に。

この回答への補足

説明不足で申し訳ありません。
自分でコピーをしないでその都度再計算した時点で関数を使って追記して、残す方法はないでしょうか。もちろんブック内でもあるいはアクセスを使っても構わないのですが何かいい方法がないでしょうか?

補足日時:2001/11/02 02:21
    • good
    • 0
この回答へのお礼

はい、意図はその通りです。少ない説明で理解してくださり、ありがとうございます。

お礼日時:2001/11/02 02:27

こんにちは



 例えばA1:A10に =RAND() を入力するのはいかがでしょうか?

参考URL:http://www2.odn.ne.jp/excel/

この回答への補足

説明不足で申し訳ありません。
その都度再計算した時点で関数を使って追記して、残す方法はないでしょうか。もちろんブック内でもあるいはアクセスを使っても構わないのですが何かいい方法がないでしょうか?

補足日時:2001/11/02 02:28
    • good
    • 0
この回答へのお礼

ありがとうございます。説明不足のようでしたので追記しておきます。

お礼日時:2001/11/02 02:13

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q正規乱数とは

学校の宿題ですがまず正規乱数の発生は2つの方法があるというのですが、意味がわかりません。
正規乱数でなんですか。
なぜ12個足して6をひくのですか。
また逆関数法の=NORMSINV(RAND())てどういう意味ですか。
正規乱数の発生
1
一様乱数を12個足して6を引く方法
=RAND()+RAND()+・・・・+RAND() - 612個分
2
逆関数法
=NORMSINV(RAND())

Aベストアンサー

正規乱数とは、正規分布に従う母集団からランダムに取り出された
数値の集合のことです。
Uを(0,1)上の一様分布に従う確率変数、Fを正規分布の分布関数とし
て、X=F^(-1)(U)(UのFの逆関数による確率変数)とすると、
P(X≦x)=P(F^(-1)(U)≦x)=P(U≦F(x))=F(x)
となって、Xの分布関数はFになり、Xは正規分布に従う確率変数と
なります。
これが、2の逆関数法です。
NORMSINVがFに相当し、RAND()がUに相当します。
1は私も意味が分かりません。

QEXCEL 乱数発生の記録

A1~C1 に0~9の乱数を発生[=RANDBETWEEN(0,9)]させ
Dの列に再計算[F9を押す]の回数、E~Gの列に出た乱数の値を入れたいのですが、関数で可能でしょうか。

  D E F G
1  1 2 5 7・・・1回目は 2,5,7が出た。
2  2 8 1 0・・・2回目は 8,1,0が出た。
3  3 9 4 4・・・3回目は 9,4,4が出た。
4  4 0 3 2・・・4回目は 0,3,2が出た。

このように再計算を行うと下の行に追加していきたいのですが、可能でしょうか。
宜しくお願いします。

Aベストアンサー

つぎの方法でできます。
反復計算を利用した方法です。

(1)ツール→オプション→計算方法 で、「自動」と「反復計算」にチェックを入れ、最大反復回数を1にする。
(2)E1に、=IF($H$1>=ROW(E1),IF(ISNUMBER(E1),E1,A$1),"")
(3)E1をF1,G1にコピー
(4)H1に、=IF(I1=0,0,H1+1)
(5)I1に、0
(6)E2に、=IF($H$1>ROW(E2),IF(ISNUMBER(E2),E2,A$1),"")
(7)E2を、E2~G100(など、必要なだけ)コピー
(8)D1に、=IF(ROW(D1)<$H$1,ROW(D1),"")
(9)D1を、D2~D100(など、必要なだけ)コピー
(10)ここで、I1を1に変える。
(11)F9を必要な回数押すと乱数が記録される。
(12)I1を0に戻すとリセットされる。

Q乱数について

こんばんは。
何度も申し訳ありませんが、今回は乱数について教えてください。
LinuxでCを勉強しているんですが、
randで乱数を発生させることはできたんですが、
そのプログラムを何度実行させても
出てきた乱数は同じ値なんです。
プログラム内で例えば10こ乱数を発生させたとすると
違うものが出ます。
しかし、もう一度そのプログラムをはしらせると
前回と全く同じ並びで同じ数が出るのはどうしてでしょうか?
言ってる意味わかっていただけましたでしょうか?
宜しくお願いします。

Aベストアンサー

乱数は計算によって、擬似的に求めています。
そのため同じ乱数が順番に出てきます。
乱数を初期化することで、順番の途中から使うことができます。
srand()がその関数です。
一般的にはプログラムが起動された時間を利用し、
乱数を初期化することが行なわれます。
コンパイラによって違うかもしれませんが、
たいてい、こんな感じで初期化します。

srand(time());

他にも方法はあります。
たとえば、人が入力するまでの時間は規則性がないので、
このとき、乱数の空回しをしてやることで、
乱数の周期性をなくすことができます。
while(1)
{
 rand(); ←乱数の空回し
 入力待ち;
 if(入力あり) break;
}

Q発生乱数の偏りを無くしたい

エクセルで=RAND()を用いてA1~A100のセルに100個乱数を発生させたときに(乱数は0~1の幅)、0~1の値を偏り無く発生させることは可能でしょうか??

発生した100個の乱数をコピーして形式を“値”にして貼り付けてその100個の乱数の平均や中央値をみてみると0.5にはならないことから疑問に思いました・・・。

ご存知の方アドバイスよろしくお願いします。

Aベストアンサー

こんにちは

面白い疑問だなと思ったので試してみました。
A1に=Rand()を入れてA1000までコピーしました。
B1に=Average($A$1,A1)と入れてB1000までコピーしました。
これで平均値の途中経過もわかるようになります。
A1からB1000までを選んで折れ線グラフを作成し、何度か再計算をすると
乱数の振れ巾や平均値の移動の様子がわかります。
1000個の数字でも平均値で0.45~0.55くらいの振れは出るんですね。
これは0.1未満の数値も出てしまうからだと思いましたので、
乱数の範囲を0.1~0.9に絞ると平均値のぶれはとても小さくなりました。
このときの式は=Rand()*(0.9-0.1)+0.1としてやればいいです。
0.01~1.00が欲しければ=Rand()*(1-0.01)+0.01とすればいいです。

Q乱数の数学的な定義はありますか?

数学の背景がないので、質問が変かも知れませんが、よろしくお願いします。

「乱数」には、数学的な定義がありますか?
例えば、「いかなる視点からも規則性のない数の並び」とか、「偶然にまかせた数の並び」とか言えるのでしょうか?

また、ある数列を与えられたときに、それが、「乱数」かどうかを調べる方法はあるのでしょうか?

というのは、たまたま、1が100個ならんだ数列でも、必ずしも「乱数」ではないと言えないような気がするのです。もし、偶然に任せるという意味で乱数を考えるとすると、たまたま、1が100個並ぶことも有り得るし、それを意識的に排除すると、むしろ、自然な「乱数」ではなくなってしまうような気がして、よくわからなくなってしまいました。

Aベストアンサー

まず,数字の出現頻度もある1つの確率分布にしたがっていることが第一の条件です。
つまり,1から100の間の整数の100万個の一様乱数と言った場合には,1の出現頻度がほぼ1万個,2も同じく1万個・・・100も同じく一万個であることです。
次に,どの数字も他の数字と関係がないことが必要です。これははっきり言うのが難しいのですが,たとえば直前の数字とその数字の間の相関が無い(つまり1あとはいつも2だったりしないこと)。先の例だと
1の後の数字を調べても1から100までの数字が同じ頻度で並んでいるような数字のことです。
ご指摘のように,1が100個ならんだ数が乱数であるか無いかは母数いくつの集団について考えているかによります。100個の集団について考えてみると明らかに上記の2条件を満たしませんから,乱数とはいえません。
しかし,10の百乗くらいの数の母集団であれば,ある一箇所に1が100個続いても乱数といえるかもしれません。
乱数検定というのがあって,上記の2つの条件を調べるのもひとつです。
ほかにもいろいろな検定方法があり,乱数は暗号技術と密接な関係があるために,現在でもいろいろ研究されています。興味があれば,「乱数検定」で検索するとたくさん出てきます。

まず,数字の出現頻度もある1つの確率分布にしたがっていることが第一の条件です。
つまり,1から100の間の整数の100万個の一様乱数と言った場合には,1の出現頻度がほぼ1万個,2も同じく1万個・・・100も同じく一万個であることです。
次に,どの数字も他の数字と関係がないことが必要です。これははっきり言うのが難しいのですが,たとえば直前の数字とその数字の間の相関が無い(つまり1あとはいつも2だったりしないこと)。先の例だと
1の後の数字を調べても1から100までの数字が同じ頻度で並...続きを読む

QExcel で、乱数時のでてくる数字、0から9の数の比率をほぼ同じにする方法

Excel で、乱数時のでてくる数字(けた数が多い時も含め)、0から9のでてきた数字の比率を計算する方法と、その比率をほぼ同じにする方法はありますでしょうか。

Aベストアンサー

#5です。

前期の方法は、各桁中の数字の比率も同じに・・・、と誤解して書いていました。ので、訂正します。

ただ、乱数を出しながら比率を合わせていくよりも、最初から希望する比率分の数字を決めた方が効率的だと思います。たとえば、よくきったトランプを4枚ずつ並べると4桁の乱数みたいになります。この方式でマクロを書きました。

セル範囲A1:A10に、0から9を入れます。
セル範囲をオートフィルで右へ必要な桁数だけコピーします。例えばH列までコピーすると8桁の数字が出来ます。下記のマクロを実行するとシャッフルされた表と、表を変換した数字が出来上がります。

このマクロはA1にかかる表を、その列数の桁の数字に変換します。左端に0がでた場合は、乱数を元に位置を変えますので、出来上がる数字の桁は必ず揃います。8桁の数字が100個欲しい場合は、上記の例のものを9個下へコピーしてからマクロを実行すればいいわけです。

# 元になる表中に空白のセルがあると、そのセルの値は0とみなされます。表の周囲のセルには何も記入しないでください。同じ数字が複数できたかどうかのチェックはしていません。

# ご質問の趣旨を逸脱した内容ですみません。余計なお世話かな~と思いながら、ボケ防止のために書いております。

Sub Shuffle2()
Dim myRange As Range, c As Range, rC As Integer, cC As Byte
Dim Rv As Byte, i As Integer, n As Integer, lC As Currency
Dim k() As Byte, d As Currency

With Range("A1").CurrentRegion
rC = .Rows.Count
cC = .Columns.Count
lC = .Cells.Count
Set myRange = .Offset(0, cC + 1)
myRange.Value = .Value
End With
ReDim k(lC)
For Each c In myRange
i = i + 1
k(i) = c.Value
Next c
Do
i = Int((lC - 1 + 1) * Rnd + 1)
n = Int((lC - 1 + 1) * Rnd + 1)
Rv = k(i)
k(i) = k(n)
k(n) = Rv
d = d + 1
Loop Until d = lC * 300
i = 0
For Each c In myRange
i = i + 1
c.Value = k(i)
Next c
If cC = 1 Then Exit Sub
With Application.WorksheetFunction
Do While .CountIf(myRange.Columns(1), 0) > 0
i = .Match(0, myRange.Columns(1), 0)
If .CountIf(myRange.Rows(i), 0) = cC Then
MsgBox "0 が出来てしまいました、途中ですが終了します。"
Exit Sub
End If
Set c = .Index(myRange, i, Int((cC - 1 + 1) * Rnd + 1))
myRange.Columns(1).Rows(i).Value = c.Value
c.Value = 0
Loop
End With
i = 0
Do
n = cC
i = i + 1
d = 1
lC = 0
Do
lC = lC + myRange.Rows(i).Columns(n).Value * d
d = d * 10
n = n - 1
Loop Until n = 0
myRange.Rows(i).Columns(cC + 1).Value = lC
Loop Until i = rC
Columns(cC * 2 + 2).NumberFormatLocal = "_ * #,##0_ ;_ * -#,##0_ ;_ * ""-""_ ;_ @_ "
End Sub

#5です。

前期の方法は、各桁中の数字の比率も同じに・・・、と誤解して書いていました。ので、訂正します。

ただ、乱数を出しながら比率を合わせていくよりも、最初から希望する比率分の数字を決めた方が効率的だと思います。たとえば、よくきったトランプを4枚ずつ並べると4桁の乱数みたいになります。この方式でマクロを書きました。

セル範囲A1:A10に、0から9を入れます。
セル範囲をオートフィルで右へ必要な桁数だけコピーします。例えばH列までコピーすると8桁の数字が出来ます。下記のマク...続きを読む

QC++の乱数に関して

C++の乱数に関する質問です。


最初に1~100の乱数を1ことり、
二番目に、最初に得られた値以外の1~100の乱数を1ことり、
三番目に、最初と二番目に得られた値以外の1~100の乱数を1ことり、
・・・・・・・
100番目に最後に残った乱数で選ばれていない値は1個となるので
1番目から99番目で得られた乱数を見れば、
100番目の乱数が予想できる。

この様な乱数はどの様にすれば得られるでしょうか。

Aベストアンサー

やり方はいくつかありますが

一番シンプルなのは
最初に1~100の乱数を1ことり、配列に格納
二番目に、1~100の乱数を1ことり、
 それが既に配列にあればもう一度取得しなおす
 配列になければ配列に格納
三番目に、1~100の乱数を1ことり
 それが既に配列にあればもう一度取得しなおす
 配列になければ配列に格納

他には

最初に1~100の数値を入れた配列を準備
取得するごとに消していく

他には

最初に1~100の乱数を1ことる
二番目に、1~99の乱数を1ことるが、最初にとったものより大きい場合は+1
三番目に、1~98の乱数を1ことるが、すでに取っているものと比べて1つより大きければ+1、2つより大きければ+2

Qエクセルで同じ日に2回出勤したデータ数を数えたい

同じ人が同じ日に2回出勤しているデータ数を知りたいです。

2 山田太郎 1/21 10:00 13:00
2 山田太郎 1/21 18:00 24:00
1 山田太郎 1/22 10:00 17:00
1 山田太郎 1/23 14:00 22:00
1 鈴木花子 1/21 10:00 17:00
1 鈴木花子 1/23 17:00 24:00
2 鈴木花子 1/24 10:00 15:00
2 鈴木花子 1/24 18:00 24:00

↑のようなタイムカードがあります。

上の例だと、2もしくは4という数値がほしいです。

今までは図のようにA列に countifs関数を記入し、同一人物が同一日付に2回出勤
しているかをチェック、その数を数えていました。

今後は、
同一人物が同一日付に2回出勤している件数を1つの関数で知りたいと考えています。
↑の例だと、4件 という数を1つの関数で出したいです。
どのようにすればよいのかアドバイスをお願いいたします。

Aベストアンサー

ソートして上のセルと比較する作業列さえ作れば簡単に数えられるものを……

=SUMPRODUCT((COUNTIFS(C1:C10,C1:C10,B1:B10,B1:B10)=2)*1)

Qポケモン 乱数調整

ポケモンの乱数調整をやり始めようかな、なんて思ってます。 僕はLightユーザーで友人が言うには乱数調整はやりやすいそうです。しかしやり方が載ったサイトを見るととてもややこしそうで「こんなん俺にできるんか??」と少し不安になっています。

僕はそこまでパソコンに詳しくなく、どちらかというと不器用です。

こんな僕でも出来るでしょうか?
具体的には孵化乱数と、野生乱数、出来れば色乱数もやってみたいです!

Aベストアンサー

・パソコンに詳しくないことと乱数調整はほとんど関係ありません。お持ちのパソコンがツールに対応していない、などではない限り。

・ご友人はBWを前提に仰ってると思います。BWなら確かに比較的やさしいと思います。
ただ、ややこしそうだとお思いなのもわかります。でもBWならサイトを見ながら一つ一つ確実にやっていけばできると思います。
BW2も同じようなものですが、こちらはタイマーずれがひどいので最初はBWのほうがいいかと。

・いきなり孵化乱数や野生乱数ではなく、まずは固定シンボル乱数や配達員乱数からのほうがとっつきやすいでしょう。
全く初めてなら固定シンボルの乱数調整ができるようになってからがいいと思います。

・ハードは何でしょう。乱数調整する場合できれば初代DSかDSLiteがいいのです。ライト(Light)ユーザーとお書きですが、ハードの意味ではなく、ポケモン廃人ではないよの意味に受け取ったのですが。

・色乱数は裏IDが判明しなければできません。



ご友人が乱数調整なさっておられるのでしたらある程度は教われるのではないでしょうか?

Qエクセルで重複しない乱数の発生

今エクセルで正負の数の足し算の100ます計算を作っていたのですが、
どうしても乱数表示をさせている所のどこかで数字が重複してしまい困っています。
なにかいい式はありませんでしょうか?

ちなみに乱数の数字の範囲は-10~10にする為に、
=INT(RAND()*(10+10)-10)
という式でやっています。

素人質問ですがよろしくお願いします<(_ _)>

Aベストアンサー

>ちなみに乱数の数字の範囲は-10~10にする為に、

何か、ややこしい百ます計算ですね。縦と横の数値の範囲で、重複を許すのですか、許さないのですか? 0は、どうするのですか? 

例えば、こんな風にして百ます計算表を作りますね。後は、工夫してみてください。
以下は、縦横重複が出ないようにしてあります。

A1~A20
=RAND()

B1:(フィルダウン・コピーで、B20まで)
=RANK(A1,$A$1:$A$20)-10


D1:(フィル・コピーで、M1まで)
=OFFSET($A$1,COLUMN(A1),1)

C2:(フィルダウン・コピーで、C10まで)
=OFFSET($A$1,ROW(A11),1)


ただし、0 が含まれます。


人気Q&Aランキング

おすすめ情報