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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

13回答

3329閲覧

c言語

SKYARROW

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

2グッド

2クリップ

投稿2016/07/25 14:24

1から100までの重複のない乱数を作成して、そこから10個の三の倍数を抜き出すプログラミングを教えてください。

otaks, shou_hitotose👍を押しています

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

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

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

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

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

kei344

2016/07/25 14:34

ご自身で書かれたコードを質問文に追記いただいたほうが回答を得られやすいと思います。
A.Ichi

2016/07/25 22:41

3の倍数が10個見つけられない場合は、よろしいのでしょうか?
tacsheaven

2020/04/07 01:31 編集

最初に作る乱数の「個数」が決まっていない(決まっているのは乱数の取り得る値の範囲だけ)のでは? むろん暗黙の了解で、乱数が100個ある、と考えてもいいのですが
guest

回答13

0

みんなちゃんとCで書こうよ。

C

1#include <stdlib.h> 2int main(void) 3{ 4 system("ruby -e \"" 5 "puts (1..100).to_a.shuffle.select{|i|i%3==0}.take(10)" 6 "\""); 7 return 0; 8}

投稿2016/07/26 13:02

raccy

総合スコア21735

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

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

0

こんにちは。

重複のない乱数の発生方法は、C言語で重複しない乱数生成の仕方を教えてください!が参考になります。

3の倍数を10個抜き出すには、生成した乱数を頭からチェックして3で割った余りが0のものを10個に到達するまでprintf()すればよいですよ。

投稿2016/07/25 14:52

Chironian

総合スコア23272

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

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

0

メンドくさいのでC++で:

C++

1#include <iostream> // cout, endl 2#include <algorithm> // shffle, remove_if, for_each 3#include <numeric> // iota 4#include <random> // mt19937 5#include <ctime> // clock 6using namespace std; 7 8int main() { 9 const int N = 100; 10 11 // 要素数Nの配列に 12 int data[N]; 13 14 // 1, 2, 3 ... N 列を作り 15 iota(begin(data),end(data),1); 16 17 // かき混ぜて 18 shuffle(begin(data),end(data),mt19937(clock())); 19 20 // 3で割れない要素を取り除き 21 remove_if(begin(data),end(data),[](int n) { return n % 3 != 0;}); 22 23 // 先頭の10個を出力する 24 for_each(begin(data), begin(data)+10, [](int n) { cout << n << ' ';}); 25 cout << endl; 26} 27 28

投稿2016/07/25 22:51

episteme

総合スコア16614

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

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

0

めんどくさいので C# で

C#

1var q = Enumerable 2 .Range(1, 100) 3 .OrderBy(i => Guid.NewGuid()) 4 .Where(i => i % 3 == 0) 5 .Take(10); 6foreach (var i in q) Console.WriteLine(i);

投稿2016/07/25 23:13

Zuishin

総合スコア28662

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

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

episteme

2016/07/25 23:15

LINQ使いがあらわれた! www
Zuishin

2016/07/25 23:23

LINQ は最初見たとき「なんだこりゃ、いらん!」と思ったのですが、慣れてみると手放せません。
guest

0

じゃあ python で

python

1import random 2print([x for x in sorted(range(1,100+1), key=lambda x: random.random()) if x % 3 == 0][:10])

python

1import random 2 3data = range(1,100+1) 4data = sorted(data, key=lambda x: random.random()) 5data = filter(lambda x: x % 3 == 0, data) 6 7for r in data[:10]: 8 print(r)

投稿2016/07/26 09:57

matobaa

総合スコア2493

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

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

0

じゃあF#で

F#

1[1..100] 2 |> Seq.sortBy (fun x -> System.Guid.NewGuid()) 3 |> Seq.filter (fun x -> x % 3 = 0) 4 |> Seq.take 10 5 |> Seq.iter (printfn "%A")

(ZuishinさんのC#を翻訳したともいう)

投稿2016/07/26 00:07

ozwk

総合スコア13528

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

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

0

ついでに PowerShell で

PowerShell

11..33 | Foreach-Object { $_ * 3 | Add-Member NoteProperty Key ([Guid]::NewGuid()) -PassThru } | Sort-Object -Property Key | Select-Object -First 10

投稿2016/07/26 11:19

Zuishin

総合スコア28662

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

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

0

じゃあ JavaScript で

JavaScript

1'use strict'; 2const N = 100, shuffle = ( a )=> { 3 let i = a.length, j; 4 if ( i === 0 ) { return arr; } 5 while ( --i ) { 6 j = Math.floor( Math.random() * ( i + 1 ) ); 7 [ a[ i ], a[ j ] ] = [ a[ j ], a[ i ] ] 8 } 9 return a; 10}; 11let arr = []; 12for ( let i = 0; i < N; i++ ) { arr.push( i + 1 ); } 13shuffle( arr ).filter( ( n )=> { return n % 3 === 0; } ).slice( 0, 10 ).forEach( ( v )=> { console.log( v ); } ); 14```**動くサンプル:**[https://jsfiddle.net/rmn2bb0g/](https://jsfiddle.net/rmn2bb0g/)

投稿2016/07/26 11:07

kei344

総合スコア69458

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

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

0

じゃあ DOSバッチファイル で

dos

1@echo off 2 3setlocal ENABLEDELAYEDEXPANSION 4 5for /l %%i in (1,1,10) do set /a num_%%i=0 6 7set loop=1 8 9:loop 10 set /a R=%RANDOM%*101/32768 11 set /a y=%R% %% 3 12 if %y% gtr 0 ( goto loop ) 13 call :sub %R% %loop% 14 if ERRORLEVEL 1 ( goto loop ) 15 set /a num_%loop%=%R% 16 set /a loop+=1 17 if %loop% lss 11 ( goto loop ) 18 19goto end 20 21:sub 22 for /l %%i in (1,1,%2) do ( if !num_%%i! equ %1 exit /b 1 ) 23exit /b 0 24 25:end 26 27for /l %%i in (1,1,10) do ( 28 call echo !num_%%i! 29)

投稿2016/08/02 09:20

takito

総合スコア3111

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

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

0

では PHP で

$ar = range(1, 100); shuffle($ar); $count = 1; foreach($ar as $d) { if ($d % 3 == 0) { printf("%2d: %3d\n", $count, $d); $count++; if ($count == 11) break; } } echo "end\n";

でも考えてみれば、「1~100の間にある3の倍数」だけ並べて、それをシャッフルして先頭から10個出せばよいような……

投稿2020/04/07 01:42

tacsheaven

総合スコア13703

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

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

0

じゃあVBAで。

VBA

1Sub Sample() 2 Dim i As Long, myNum As Long 3 Dim myFlag(1 To 100) As Boolean 4 5 Randomize 6 7 For i = 1 To 10 8 Do 9 myNum = Int((100 - 1 + 1) * Rnd + 1) 10 Loop Until myFlag(myNum) = False And (myNum Mod 3) = 0 11 12 Cells(i, 1).Value = myNum 13 myFlag(myNum) = True 14 Next i 15End Sub

投稿2016/08/02 23:16

PineMatsu

総合スコア3579

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

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

0

#!/bin/bash # $1 = # of seconds # $@ = What to print after "Waiting n seconds" countdown() { secs=$1 shift msg=$@ while [ $secs -gt 0 ] do printf "\r\033[KWaiting %.d seconds $msg" $((secs--)) sleep 1 done echo }

投稿2021/04/18 18:14

tyaaaaaaaaaaras

総合スコア134

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

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

0

Cなら

C

1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4 5int ransuu(int max) { 6 return rand() % max + 1; 7} 8 9int main() { 10 srand((unsigned int)time(NULL)); 11 printf("乱数は: %d \n", ransuu(100)); 12 return 0; 13} 14

でいける(ransuu(最大値))

参考ページ -> https://www.sejuku.net/blog/23352

投稿2020/04/07 01:25

編集2020/04/07 01:27
shuntar30

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問