C言語で

Writer: admin Type: duanmo Date: 2019-03-08 00:00
C言語で-1から-6の乱数を発生させたいのですができません。今はsrand((unsigned)time(NULL));for(i = 0;i <= 0;i++){ printf("¥n :%d",rand()% );}という風に書いています。※式は省いています共感した0###>C言語で-1から-6の乱数を発生させたいこのような関数を作りますint dice(void){return -1 * (rand()%6 + 1);}ナイス0
###皆さんありがとうございました!無事解決することができました。今回この方をベストアンサーに選んだのは最も簡単に解決できる方法だったからです###http://sa.eei.eng.osaka-u.ac.jp/tatsumi/tani_prog/num/random.html#include <stdlib.h>#include <assert.h>// 範囲 [0, n) の(ほぼ)一様分布乱数int uniform_rand(int n) {    return rand() / (RAND_MAX / n + 1);}// 範囲 [lower, upper] に写像するint uniform_rand_within(int lower, int upper) {    assert(lower < upper);    return lower + uniform_rand(upper - lower + 1);}// お試ししてみる#include <stdio.h>#include <time.h>int main() {    srand((unsigned int)time(0));    for (int i = 0; i < 100; ++i)        printf("%d\n", uniform_rand_within(-6, -1));}ナイス0
###C++では <stdlib.h>(<cstdlib>)の rand関数は非推奨となっています。C++では乱数生成ライブラリは <random> というヘッダファイルがあります。これを使って-1から-6の乱数を生成できます。#include <iostream>#include <random>using namespace std;int main(){ random_device rnd; mt19937 gen(rnd()); uniform_int_distribution<> dist(-6, -1); for (int i = 0; i < 20; i++) { cout << dist(gen) << endl; }}出力結果:-2-1-2-5-5-3-3-1-5-3-3-1-3-3-4-3-4-5-5-3ナイス0
###printf("¥n :%d",rand()%6 -6 );ナイス0

 

TAG