質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

4058閲覧

ランダムで出た数の個数を数える方法

ryuto0822

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/03/14 13:06

前提・実現したいこと

C#でちょっとした指定した個数を当てるミニゲームを作ったのですが、ランダムで出た個数の数えるコードがわからず一つ一つ自分で数えていたので、その手間をなくすために、ランダムで出た数の個数の数え、表示をする方法を知りたいです。できれば、下のソースコードに加えて動作するのがいいのですが、できないのであるならば、、別の方法で教えてください。回答よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ
現状はなし

該当のソースコード

C#
ソースコード
using System;

namespace ConsoleApp28
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
Console.WriteLine("?の数が出たら終了");
while (true)
{
int dice = rnd.Next(0, 101);
Console.WriteLine(dice);
if (dice == 6) //プレイヤーに数を指定してもらい、その都度変えます。
{
break;
}
}

Console.WriteLine("終了"); Console.ReadKey(); } }

}

補足情報(FW/ツールのバージョン)

Visual Studio 2017

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こういうことですか?

C#

1 static void Main(string[] args) 2 { 3 List<int> randvalue = new List<int>(); 4 var rnd = new Random(); 5 Console.WriteLine("6の数が出たら終了"); 6 while (true) 7 { 8 var dice = rnd.Next(0, 101); 9 randvalue.Add(dice); 10 Console.WriteLine(dice); 11 if (dice == 6)//プレイヤーに数を指定してもらい、その都度変えます。 12 { 13 break; 14 } 15 } 16 Console.WriteLine("6は{0}番目に出ました。", randvalue.Count()); 17 Console.WriteLine("終了"); 18 Console.ReadKey(); 19 }

投稿2018/03/15 08:49

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuto0822

2018/03/15 10:33

回答ありがとうございます。List<int>.Count'をメソッドのように使用することはできません。とエラーが出てしまいます。どうすればよいでしょうか?
PineMatsu

2018/03/15 11:09 編集

私が書いたようにすれば動くはず。なんでそのような書き方をするのかわかりません。 ListコンテナのCountはインスタンスにいくつデータがあるかと言うのを返す関数です。なのでそのような書き方はできません。
evin101

2018/03/15 16:10

もしファイルの先頭のほうに以下の記述がなければ入れてみてください。 using System.Linq;
PineMatsu

2018/03/16 00:07

usingディレクティブで使用しているのは、 using System; using System.Collections.Generic; using System.Linq; の3つです。 テンプレートを使ってプロジェクトを作成すれば、この3つは含まれているはずですが、使ってないということで消してしまってたら動かないですね。
sh_akira

2018/03/16 05:55

List<T>を使っているなら普通にCountプロパティを使えばいいんじゃないですかね。 ちなみにList<T>にCount"関数"はありません。それはLINQのIEnumerableの拡張メソッドです。 Count()をCountに書き換えればusing無しで動きます。 ちなみにCount()を呼び出しても、Countプロパティがある場合は、結局Countプロパティを返します。 逆にCountプロパティが無い場合は全数ループして個数返してくるので遅いです。気を付けてください。
ryuto0822

2018/03/16 13:00

using System.Linq;を加えたらできました。また、()を消してもできました。IEnumerableの拡張メソッドというこは、IEnumerableの拡張メソッドを加えたら、using System.Linq;は必要ないということですか?たくさんの勉強になるコメントありがとうございました!
PineMatsu

2018/03/16 14:16

usingは要はnamespaceの省略をするためのものなので、フルで指定すれば書かなくてもいい。ただやたらと長くなって見にくくはなりますけど。
ryuto0822

2018/03/17 01:20

なるほどありがとうございます。
guest

0

こんな感じ?

C#

1using System; 2 3namespace ConsoleApp28 4{ 5class Program 6{ 7static void Main(string[] args) 8{ 9 int[] valuesCount = new int[102]; /* カウント値を保持する配列 */ 10 Array.Clear(valuesCount, 0, 102); /* ゼロクリア */ 11 Random rnd = new Random(); 12 Console.WriteLine("?の数が出たら終了"); 13 while (true) 14 { 15 int dice = rnd.Next(0, 101); 16 valuesCount[dice] += 1; 17 Console.WriteLine(dice); 18 if (dice == 6)//プレイヤーに数を指定してもらい、その都度変えます。 19 { 20 break; 21 } 22 } 23 /* 結果の表示 */ 24 foreach (int i in valuesCount) 25 { 26 Console.Write("{0} ", i); 27 } 28 Console.WriteLine("終了"); 29 Console.ReadKey(); 30} 31} 32} 33

投稿2018/03/14 14:57

編集2018/03/14 15:00
TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuto0822

2018/03/15 07:10

回答ありがとうございます。近いのですが、0000120010211100と値が散らばってしまいます。散らばった数字をすべて足すとちょうど6が出た番数になるので、そこをうまくまとめられませんでしょうか?
guest

0

c#

1while (true) 2{ 3  int dice = rnd.Next(0, 101); 4  Console.WriteLine(dice); 5  if (dice == 6) //プレイヤーに数を指定してもらい、その都度変えます。 6  { 7    break; 8  } 9}

これを

c#

1// KAZU 実行する数 2for(int i=0;i<(KAZU-1);i++) 3{ 4  int dice = rnd.Next(0, 101); 5  Console.WriteLine(dice); 6}

こーゆーことかな?

投稿2018/03/14 13:11

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuto0822

2018/03/14 13:35

回答ありがとうございます!ですが、実行する数を定めるのではなく、ランダムで発生させた数の個数を、数えて終了の下に実行された数の個数を表示するコードです。
y_waiwai

2018/03/14 13:43

えーと、数の個数ってなんの数や念ねん、 ってことで、具体的に例をだしてくれませんか?
ryuto0822

2018/03/15 06:59

わかりずらい文章、すみません。該当のソースコードを作動させると、6が出るまでランダムで数が出てきます。そこで、私は6が最後何番目に出たのか知りたいのです。一つ一つ自分で数えることもできますが、数が多くなってくると大変です。そこで、知りたいのが6が最後何番目ででたのかを数えてくれるプログラムです。 理想の例(起動したときのコンソール画面です) 6の数が出たら終了 3 5 15 6 終了 4番目 このような感じです。
y_waiwai

2018/03/15 10:46

int i=0; while (true) { i++;   int dice = rnd.Next(0, 101);   Console.WriteLine(dice);   if (dice == 6) //プレイヤーに数を指定してもらい、その都度変えます。   {     break;   } } Console.WriteLine($"{i}番目");
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問