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

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

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

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

Q&A

解決済

3回答

3265閲覧

paiza.ioでc言語で記述したdrand48関数が使えません

OkomekO

総合スコア30

C

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

0グッド

0クリップ

投稿2021/01/06 03:09

編集2021/01/06 04:46

前提・実現したいこと

paiza.ioこちらのサイトでdrand48()を実行したいです。

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

Main.c:166:5: warning: implicit declaration of function 'drand48' is invalid in C99 [-Wimplicit-function-declaration] r =drand48();

###追記
参考プログラムを作成いたしました。
drand48()で5回乱数を発生させるプログラムを記述いたしました。こちらをpaiza.ioで実行させるためにはどうすれば良いでしょうか?

C

1#include <stdio.h> 2#include <stdlib.h> 3#include <time.h> 4int main() 5{ 6 double x; 7 int i1; 8 9 srand48(time(0)); // 初期化 10 11 for (i1 = 0; i1 < 5; i1++) { 12 x = drand48(); // 乱数の生成 13 printf("%f\n", x); 14 } 15 16 return 0; 17}

###追記したプログラムでのエラーメッセージ

Main.c:9:2: warning: implicit declaration of function 'srand48' is invalid in C99 [-Wimplicit-function-declaration] srand48(time(0)); // 初期化 ^ Main.c:12:8: warning: implicit declaration of function 'drand48' is invalid in C99 [-Wimplicit-function-declaration] x = drand48(); // 乱数の生成

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

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

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

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

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

maisumakun

2021/01/06 03:15

どのようなコードを書きましたか?
OkomekO

2021/01/06 03:34 編集

このようなコードです。 double keisan(){ double r=0.0; r =drand48(); r=r*0.2-0.2; return r; } includeしたものは #include<stdio.h> #include<math.h> #include<stdlib.h> #include<time.h> #include<unistd.h> です。よろしくお願いいたします。
maisumakun

2021/01/06 03:41

drand48関数はどこでしょうか?
OkomekO

2021/01/06 04:45

ご回答ありがとうございました。具体的なプログラムを作成いたしましたので、そちらをご確認していただければ幸いです。
guest

回答3

0

ベストアンサー

C

1#define _XOPEN_SOURCE // これが要る 2 3#include <stdio.h> 4#include <stdlib.h> 5#include <time.h> 6int main(void){ 7 // Your code here! 8 srand48(time(0)); 9 double r = drand48(); 10 11 printf("%lf",r); 12} 13

投稿2021/01/06 04:00

ozwk

総合スコア13553

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

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

OkomekO

2021/01/06 04:45

ご回答ありがとうございました。ご回答のコードを追記しても解決いたしませんでした・・・ 具体的なプログラムを作成いたしましたので、そちらをご確認していただければ幸いです。
ozwk

2021/01/06 05:02

#define _XOPEN_SOURCE を先頭に入れるだけで動きましたよ?
kaina

2021/01/06 05:04

ほんとに試してみたんですか? ozwkさんのコードそのままでも、あなたが書いたコードに #define _XOPEN_SOURCE // これが要る を追記してもどちらの場合でも正常に動作しますよ?
OkomekO

2021/01/06 07:03

#define _XOPEN_SOURCE // これが要る これを#include行の下に記述したことがまずかったようです 一番最初に定義するとエラーが解消されました みなさんありがとうございました
ozwk

2021/01/06 07:20

> 一番最初に定義するとエラーが解消されました そういえばいい忘れてましたね。不親切でした。
OkomekO

2021/01/06 16:37

いえいえ、こちらこそ勉強になりました。ありがとうございました。
guest

0

drand48関数というのは標準関数にはありません

投稿2021/01/06 03:40

y_waiwai

総合スコア88042

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

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

OkomekO

2021/01/06 04:44

ご回答ありがとうございました。具体的なプログラムを作成いたしましたので、そちらをご確認していただければ幸いです。
y_waiwai

2021/01/06 04:52

存在しない関数を使おうとしてもどうしようもありません。 あなたがそのdrand48という関数を書きましょいう
guest

0

単純に、paiza.io環境にはその関数が存在しないということではないでしょうか。

「自前の疑似乱数生成コードを使う」、あるいは「C言語標準であるrand()を使う」など、コードを書き直すほかないかもしれません。

投稿2021/01/06 04:51

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問