1から100までの重複のない乱数を作成して、そこから10個の三の倍数を抜き出すプログラミングを教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/25 22:41
2020/04/07 01:31 編集
回答13件
0
こんにちは。
重複のない乱数の発生方法は、C言語で重複しない乱数生成の仕方を教えてください!が参考になります。
3の倍数を10個抜き出すには、生成した乱数を頭からチェックして3で割った余りが0のものを10個に到達するまでprintf()すればよいですよ。
投稿2016/07/25 14:52
総合スコア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
総合スコア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
総合スコア28662
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
総合スコア2493
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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
総合スコア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
総合スコア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
総合スコア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
総合スコア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
総合スコア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(最大値))
投稿2020/04/07 01:25
編集2020/04/07 01:27総合スコア80
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。