• ベストアンサー

乱数の利用で、九つのセルにそれぞれ違う数を(整数)を返すことはできるの

乱数の利用で、九つのセルにそれぞれ違う数を(整数)を返すことはできるのでしょうか。 =INT(RAND()*10)を使うのは、わかるのですが、、、。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

九つの数値とは1から9までの数値ということでしょうか、乱数の関数から直接に求めることはできませんね。 例えばJ1セルに =RAND() と入力してJ9セルまでオートフィルドラッグします。 その後にA1セルからI1セルまでの範囲に1から9までの数値をランダムに並べるとしたらA1セルには次の式を入力してI1セルまでオートフィルドラッグします。 =RANK(INDEX($J$1:$J$9,COLUMN(A1)),$J$1:$J$9,1) F9ボタンを押すことで乱数計算を繰り返すことができますので、そのたびに数値の表示が変化します。 なお、J列が目障りでしたらJ列を選択して右クリックし「非表示」を選択すればよいでしょう。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

乱数というのは同じ数が出ることを排除するルール(本質)では在りません。 乱数というのは、数学的には難しい理論が背景に必要ですので素人には手におえません。 それで乱数を入れた列とは別に、上から別列に連続番号を振り、乱数列で並べ替え、連番の方をマス目に持ってくるなどしかないでしょう。 乱数はRAND関数ではその都度動くので、値として固定するほうが良かろう。 ーー この質問の9つというのは3x3行列のマス目ですか。自分が書いた文章を良く読んで、質問としてください。 そんな内容の質問の臭いもしますが。 ーー 例データ 連番  乱数(B列) 値化(B列) 1 5 5 2 9 6 3 2 8 4 8 7 5 2 4 6 8 8 7 3 6 8 3 2 9 3 8 B列の式は=INT(RAND()*(10-1)+1) 下方向に式を複写。 B列は色々場合によって変わる。 B列をコピーし、B列に 形式を選択して貼り付けー値、で式を消す B列で並べ替え 8 2 5 4 1 5 2 6 7 6 4 7 3 8 6 8 9 8 ーー E2に(ここを何処にするかで式が変わる) =INDEX($A$1:$A$9,MOD(ROW()-2,3)*3+1+MOD((COLUMN()-5),3)) G2まで式を複写。E2:G2をE4:G4まで式を複写 結果 8 5 1 2 7 4 3 6 9

outdoors80
質問者

お礼

ご丁寧に教えて頂いてありがとうございました。

noname#204879
noname#204879
回答No.2

1.セル C1 に式 =RAND() を入力して、此れを下方にズズーッと   セル C9 までドラッグ&ペースト 2.セル A1 に式 =MATCH(SMALL(C$1:C$9,ROW()),C$1:C$9,0)   を入力して、此れを下方にズズーッとセル C9 までドラッグ&   ペースト すると、範囲 A1:A9 に 1 ~ 9 の無重複の整数が得られます。

outdoors80
質問者

お礼

ご丁寧に教えて頂いてありがとうございました。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

=INT(RAND()*10) を9つのセルに入力すると「それぞれ違う整数」はめったなことでは得られないでしょう。 A1~A9に=RAND()*10 とし B1に =RANK(A1,A$1:A$9) を入力して B1~B9までCopy & Paste

outdoors80
質問者

お礼

ご丁寧に教えて頂いてありがとうございました。

関連するQ&A

  • 0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒスト

    0 からa-1 までの整数の乱数をn 個発生させ、発生した整数のヒストグラムをプリントアウトしたいです.また,a とnはコマンドラインから引き渡します 0 からa-1 までの整数を発生する乱数の書き方は (int)((double)rand()/((double)RAND_MAX+1) *a); プログラムをRandHist としたとき RnadHist 10 1000 と入力すれば 0 982 1 1035 2 956 3 1102 ・ ・ 9 971 などと。出力されるようなプログラムを作る問題ですが,a とn は、任意に変えられるように したいです. どなたか教えてください.

  • エクセルで、乱数の関数 同じ数が無いように

    乱数を発生させる関数で、RAND関数は、小数点(0~1の間)で、RANDBETWEEN関数は整数で出るとのことですが、RANDBETWEEN関数は同じ数字がいくつか重複して出ます。整数で同じ数が出ないようにする関数はないでしょうか?

  • 乱数に関する質問

    (使ってる開発環境はBCCDeveloperです) 乱数に関する質問なんですが 構造体の中の変数に乱数を代入しようとすると 代入したい乱数が、その前後にある構造体に入れようよした数が乱数の値になってしまいます それはどうしてなのでしょうか またどうやって解決すればいいでしょうか 文章の説明だけではわかりずらいと思うので ↓にコメント入りでその詳細を書きました #include<stdio.h> #include <stdlib.h> struct hop{ int kougeki; int gard; int hit; }; struct kio{ int atock; int bougyo; int lis; }; int tekiw(); int sare(); void main(){ int i=8; struct kio teki; struct hop player; player.kougeki= 40 player.gard =50 player.hit= 60 int p; srand((unsigned)time( NULL )); if(i=8){ teki.atock=rand()%60; //ここら変の乱数の値が上の構造体変数に代入した どれかの数になっている teki.bougyo= rand()%50; //ここも同じ teki.lis =rand()%40; //ここも同じ }; p=8; tekiw(); }; int tekiw(struct kio teki){ printf("%d",teki.lis); return teki.lis; };

  • 乱数

    ポケコンのC言語で乱数を変数に代入したいのですがうまくいきません。 変数に代入したい数は1~10までの整数なので、 a=1+rand(void)%10; と入力すると、syntax errorとでてきました。 因みにパソコンのC++上では動作しました。 考えられる原因をお教えください。よろしくお願いいたします。

  • 隣のセルとは違う数を表示するには?

    算数の百ます計算シートを作っています。 横一列に10セルあるとして,1セルめにrand関数で1桁の整数を表示します。2セルめには,1セルめとは違う1桁の整数を表示し,3セルめはそれ以外の数,4セルめ・・・としたいのですが,どういう関数を使えば可能でしょうか?

  • エクセルで「乱数」を出す@関数は?

    「1-2-3」では、乱数を出す関数は「@INT(@RAND*400)+1」で1~400の間のアットランダムな乱数をさながらサイコロのように出すことが出来るのですが、エクセルではそういう関数があるのでしょうか? 是非教えて下さい。

  • 標準正規分布の乱数

    RAND()関数は ((double)rand() / (1.0 + RAND_MAX))と定義します。 中心極限定理により、一様乱数を足し合わせると正規分布に近づくことから、 x = 分散 * (Σ[1~12]RAND() - 6) + 平均 で正規乱数が作れる。標準正規分布は分散1、平均0なのでその乱数は x = Σ[1~12]RAND() - 6 ですよね。この乱数を例えば100個羅列するにはどうしたらいいのでしょうか? もし間違ってたら指摘してください。 参考文献「Cによるシミュレーションプログラム 石川宏」 #include <stdio.h> #include <stdlib.h> #define RAND() ((double)rand() / (1.0 + RAND_MAX)) #define NUMBER 10000 /* 発生させる乱数の数 */ main(void) { int j; double u, x; srand(5); for (j = 0; j <= 11; j++) { u = u + RAND(); } x = u - 6.0; }

  • メルセンヌツイスターによる乱数の使い方

    メルセンヌツイスターによる乱数を生成したいのですが、下記コードにすると、mt_rand関数を呼ぶたびにシードが初期化され他乱数が生成されます。 やりたいことは、main関数で一度シード101で初期化した後は、mt_rand関数内では、初期化することなく継続した乱数を生成したいのです。 そのためa_mt_rand関数のようにすると、mtが定義されていないとなるエラーとなります。 namespaceの問題と思うのですが、色々試してみましたが、できませんでした。 どのようにすればできるでしょうか。 vc++11、windows11 使用 参考サイト C++ 乱数ライブラリ std::random の使い方 リンクはうまく貼れませんでした。 #pragma hdrstop #include <iostream> #include <stdio.h> #include <random> using namespace std; void mt_rand(void); int main(int argc, char *argv[]) { int ptr; std::mt19937 mt(101); // メルセンヌツイスターの32ビット版、引数は初期シード std::uniform_int_distribution <> rand100(0, 100); // [0, 99] 範囲の一様乱数 ptr = rand100(mt); printf("ptr=%d\n",ptr); mt_rand(); } void mt_rand(void) { int ptr=0; std::mt19937 mt(101); // メルセンヌツイスターの32ビット版、引数は初期シード std::uniform_int_distribution <> rand100(0, 100); // [0, 99] 範囲の一様乱数 ptr = rand100(mt); printf("%d\n",ptr); } void a_mt_rand(void) { int ptr=0; ptr = rand100(mt); printf("%d\n",ptr); }

  • 条件付で乱数をセルに入力したい。

    =CHOOSE(RAND()*3+1,"+","-","×") 上記で表示させた+-×でマイナスのときだけ0から20までの整数(ランダムに)、+、-の時は、0から10までの整数(ランダムに)をセルに入れたい。

  • Excel2007で乱数を利用して

    乱数を利用して抜き出したいです 0~9の数字記号がありまして、その内のいずれかがセルA~AJの各セルに入ってます。 セルA~AJは1~36番目と言うことなんで数字1~36を乱数で被ることなく6個をとり その6個を利用してセルA~AJの数字記号を抜き出してセルQ6~V6に表したいです。 マクロボタンを押す度に別の乱数でまた抜き出しては次のQ7~V7へと、違う乱数を使っては下へ下へと表示したいです。 よろしくお願いいたします。

専門家に質問してみよう