C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part143
https://mevius.5ch.net/test/read.cgi/tech/1560574313/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
探検
C++相談室 part144
■ このスレッドは過去ログ倉庫に格納されています
2019/07/22(月) 13:18:35.52ID:gptRHpgT
685デフォルトの名無しさん
2019/08/29(木) 23:33:23.53ID:xxmh5CSn visual sutdioというかvc++だと使ってないコードを削除するみたいなオプションあったからもしかしたら消えるかもしれない
他はよく知らない・・・
他はよく知らない・・・
686デフォルトの名無しさん
2019/08/30(金) 00:11:27.74ID:fVqdV4kl libにしなかったらlinkしたobj全て
libにしたらobj単位でシンボル一つでも参照があればlinkされるのが基本じゃね
組み込み用のコンパイラだとそれ以上に頑張ってサイズ削ることもあるだろうけど
libにしたらobj単位でシンボル一つでも参照があればlinkされるのが基本じゃね
組み込み用のコンパイラだとそれ以上に頑張ってサイズ削ることもあるだろうけど
687デフォルトの名無しさん
2019/08/30(金) 00:41:24.99ID:pQR0WkIg グローバル変数のコンストラクタに起動時処理書いといたら、これが案外呼ばれるタイミングがわからない。
手続きの中で明示的に参照しにいかないとあかんと思った。
手続きの中で明示的に参照しにいかないとあかんと思った。
688デフォルトの名無しさん
2019/08/30(金) 00:46:48.02ID:fVqdV4kl static変数の参照返す関数つくるのはよくやる
689デフォルトの名無しさん
2019/08/30(金) 00:50:00.39ID:T2NlJT89 ここの動的初期化によるけど、まあ分からん・・・
定数初期化しとけるならそうしとくのがいいけどいつもできるわけでもない
https://ja.cppreference.com/w/cpp/language/initialization
定数初期化しとけるならそうしとくのがいいけどいつもできるわけでもない
https://ja.cppreference.com/w/cpp/language/initialization
690デフォルトの名無しさん
2019/08/30(金) 00:56:53.55ID:8Dc5lx9D 一見使ってないからと言ってコンパイラが勝手にデータ構造替えちゃったら動的リンク時とか整合性取れなくなっちゃう気がする
691デフォルトの名無しさん
2019/08/30(金) 08:30:00.34ID:Okk0GWIA 動的ライブラリが元のバイナリの変数を暗黙に触るかはOSによる。
linuxは触れるがmacは触れない。
linuxは触れるがmacは触れない。
692デフォルトの名無しさん
2019/08/30(金) 21:41:54.95ID:OdSxakdr std::string="あいう";
c++って内部的な文字コードって何になるのかな?
あといまいちwstringの使い分けがわかんない、日本語だとwstring使えばいいのか?
c++って内部的な文字コードって何になるのかな?
あといまいちwstringの使い分けがわかんない、日本語だとwstring使えばいいのか?
693デフォルトの名無しさん
2019/08/30(金) 21:49:07.10ID:zlaBwQso 決まってない
最近ようやく明示的にutf8対応しだした
wstringはワイド文字列
最近ようやく明示的にutf8対応しだした
wstringはワイド文字列
694デフォルトの名無しさん
2019/08/30(金) 22:10:41.83ID:OdSxakdr 決まってないって言うのは処理系依存ってこと?
695デフォルトの名無しさん
2019/08/30(金) 22:14:30.31ID:Q+0yO3vE それぐらい自分で試したら?
それが確実でしょ
それが確実でしょ
696デフォルトの名無しさん
2019/08/30(金) 22:18:34.99ID:QpJdGFlG sringの中の文字コードは入れた文字列の文字コード
普通の文字列リテラルの文字コードはそのソースコードが書かれたテキストの文字コード
文字列リテラルはu8などのプレフィックスをつければUnicodeになる
普通の文字列リテラルの文字コードはそのソースコードが書かれたテキストの文字コード
文字列リテラルはu8などのプレフィックスをつければUnicodeになる
697デフォルトの名無しさん
2019/08/30(金) 22:19:54.88ID:BOCgcfAb 試しただけじゃそれが処理系依存の結果かどうかなんて判断できんじゃん
698デフォルトの名無しさん
2019/08/30(金) 22:21:51.17ID:Q+0yO3vE ここで答えもらってもそれが正しい保証がどこにある
699さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/30(金) 22:23:12.28ID:ZMew/+Uj コンパイラによって日本語シフトジスなどのマルチバイト文字列の解釈が違って移植の際にトラブることがある。
700デフォルトの名無しさん
2019/08/30(金) 22:33:35.27ID:QpJdGFlG とりあえずリテラルにはu8やuをつけておけば問題ない
701デフォルトの名無しさん
2019/08/30(金) 22:39:07.85ID:QcXmSAua そしてHPUXで悲鳴をあげることに
702デフォルトの名無しさん
2019/08/30(金) 22:41:21.90ID:BOCgcfAb 正しい保証はできないかもしれんが間違いは明確だな
703デフォルトの名無しさん
2019/08/30(金) 22:53:05.39ID:Okk0GWIA gccならutf-8だろうけれど、最近のVCはどうだろ。
704デフォルトの名無しさん
2019/08/30(金) 23:28:54.53ID:Oe3WNWk3 文字コードの話題は盛り上がっていいね
ある意味一番ハマる部分かも
ある意味一番ハマる部分かも
705デフォルトの名無しさん
2019/08/31(土) 01:18:30.00ID:toQMNfCu u8つければいい
706デフォルトの名無しさん
2019/08/31(土) 12:17:38.05ID:WtWTaSD6 char型および文字列リテラルが何になるのか不定なのがアレなので
もうさいしょからu8""とchar8_tとstd::u8stringを使うように徹底するのは良いのかもしれない
もうさいしょからu8""とchar8_tとstd::u8stringを使うように徹底するのは良いのかもしれない
707デフォルトの名無しさん
2019/08/31(土) 13:49:09.93ID:gI08UaXy WindowsはTCHARで書くべしみたいなのはまだあるの?
最近Windows使ってないもんでよく分からん
最近Windows使ってないもんでよく分からん
708デフォルトの名無しさん
2019/08/31(土) 14:24:18.19ID:6oowjHUQ 昔から自分でオプション変えて好きにしろとしか
709デフォルトの名無しさん
2019/08/31(土) 14:25:31.75ID:Jddzk3ii >>706
でもUTF16の方が問題起きにくい気がする
でもUTF16の方が問題起きにくい気がする
>>709
ファイルシステム関係は uft16 で、それ以外は utf8 で分けるしかないでしょうね、"ファイルシステム uft16" はやったことがありますが、utf8 はまだ触ったことがありません…
ファイルシステム関係は uft16 で、それ以外は utf8 で分けるしかないでしょうね、"ファイルシステム uft16" はやったことがありますが、utf8 はまだ触ったことがありません…
711デフォルトの名無しさん
2019/08/31(土) 18:44:11.09ID:IP14yh++ utf8は冗長コードの問題があるから内部処理用コードには向かないんだよね。
712デフォルトの名無しさん
2019/08/31(土) 18:47:33.88ID:toQMNfCu 読みこみでハネるのが主流じゃね?
utf16が一番中途半端
utf16が一番中途半端
713デフォルトの名無しさん
2019/08/31(土) 18:54:01.60ID:IP14yh++ そうかな、場合にもよるけど、日常使う文字はほぼutf16に収まるし、
utf8だとstd::regexで日本語がまったくつかえないとかあるしで、
俺的にはutf16の方が便利かな。
utf8だとstd::regexで日本語がまったくつかえないとかあるしで、
俺的にはutf16の方が便利かな。
714デフォルトの名無しさん
2019/08/31(土) 18:58:48.47ID:toQMNfCu ほぼ収まるってのが一番厄介な所だろ
サロゲートペア対策してなさそう
サロゲートペア対策してなさそう
715デフォルトの名無しさん
2019/08/31(土) 19:07:54.35ID:QlojAnpK 日常使う文字こそ今やサロゲートペアだらけなのに🐙
716デフォルトの名無しさん
2019/08/31(土) 19:34:37.71ID:oexy9R6b 絵文字はみんなサロゲートペアだもんな
あれのおかげでようやく欧米人どもが真面目にUnicode対応するようになった
あれのおかげでようやく欧米人どもが真面目にUnicode対応するようになった
717デフォルトの名無しさん
2019/08/31(土) 21:17:21.24ID:ny+pXiR9 その代わり新宿ダンジョンよりも複雑奇怪になったけどな
718デフォルトの名無しさん
2019/08/31(土) 21:55:55.82ID:OiY9nyzL 絵文字はやめてほしいわ。そもそも架空の文字は登録しないんじゃなかったのかよ。
21bitも使えてコードポイントに余裕があるからといってロクなことしない。
21bitも使えてコードポイントに余裕があるからといってロクなことしない。
719デフォルトの名無しさん
2019/08/31(土) 22:01:23.04ID:WtWTaSD6 足りなくなったらサロゲートペアを足せばいいからなw
720デフォルトの名無しさん
2019/09/01(日) 00:01:08.44ID:U3czXmCF 🀄🀄🀄
721デフォルトの名無しさん
2019/09/01(日) 18:32:43.72ID:L3u9XotW もう全部utf32でいいんじゃね 一番簡単だしみんなハッピーや
722デフォルトの名無しさん
2019/09/01(日) 19:43:20.80ID:AU7sQxSH utf32も結合文字が。。
723デフォルトの名無しさん
2019/09/01(日) 19:48:05.67ID:UMpnMGJj で、結局utf8でよくねってなる
724デフォルトの名無しさん
2019/09/01(日) 19:58:29.50ID:5ppTYJ/k いろいろ工夫を凝らし始めるとiso-2022でいいじゃんという
725デフォルトの名無しさん
2019/09/01(日) 20:03:47.57ID:ugxLNVG7 う、うん…
726デフォルトの名無しさん
2019/09/01(日) 21:56:38.21ID:csfeG7d1 文字列なんか一番基本的な物の一つなんだから
もっと簡単でもよかったのにね
もっと簡単でもよかったのにね
727デフォルトの名無しさん
2019/09/01(日) 22:30:33.03ID:XdngnPPu 4byteの配列にコードポイントまんま入れるんだ
結合文字は忘れろ
結合文字は忘れろ
728デフォルトの名無しさん
2019/09/02(月) 00:01:08.82ID:g71KPPKA コードポイントじゃなくてメモリポインタじゃないの?
729デフォルトの名無しさん
2019/09/03(火) 08:08:26.56ID:/7AcGg3i オブジェクト指向の3大要素をすべて満たしたプログラム作れって課題なんだけど、じゃんけんでいいかな?
730デフォルトの名無しさん
2019/09/03(火) 08:58:16.91ID:JzHlK+VD じゃんけんでメッセージを送る機能が必要になるとは思わないが
731デフォルトの名無しさん
2019/09/03(火) 09:00:22.95ID:LV1H9AE4 チャットでいいんじゃね?
画像と文字送れば色々実験できるし
画像と文字送れば色々実験できるし
732デフォルトの名無しさん
2019/09/03(火) 09:35:35.97ID:/7AcGg3i チャットかあ
難しそうだな…
難しそうだな…
733デフォルトの名無しさん
2019/09/03(火) 10:27:53.48ID:Hys2x8bh 三大要素って委譲とメッセージとなんか?
734デフォルトの名無しさん
2019/09/03(火) 10:35:12.45ID:/7AcGg3i カプセル化、継承、ポリモーフィズムの3つ
735デフォルトの名無しさん
2019/09/03(火) 16:47:41.46ID:WZskrpAp チャットを作ると
カプセル化:ネットワーク部分、チャット部分
継承:継承元からサーバクラス派生、クライアントクラス派生
仮想:TCPクラス-UDPクラス切り替え
完璧じゃね?
カプセル化:ネットワーク部分、チャット部分
継承:継承元からサーバクラス派生、クライアントクラス派生
仮想:TCPクラス-UDPクラス切り替え
完璧じゃね?
736デフォルトの名無しさん
2019/09/03(火) 17:14:42.83ID:xpzn8aWg 別にじゃんけんだっていいだろ
継承:手の種類
多態性:手の画面出力
カプセル化:しわの数
継承:手の種類
多態性:手の画面出力
カプセル化:しわの数
737デフォルトの名無しさん
2019/09/03(火) 18:12:16.81ID:S+eQGM/g タイマーで早出し遅出しの判定とか
ネットワーク対戦機能とか
履歴取ってプレイヤーの手の傾向学習してくるAIとか
色々盛り込んでみればいい
ネットワーク対戦機能とか
履歴取ってプレイヤーの手の傾向学習してくるAIとか
色々盛り込んでみればいい
738デフォルトの名無しさん
2019/09/03(火) 18:57:18.29ID:7WEfMANz ちゃんと負けた時はズコーって音声出すんだぞ
739デフォルトの名無しさん
2019/09/03(火) 20:42:17.04ID:O03sdIlG 期限が金曜だからあんまり凝ってる時間はないかな。クラス図とシーケンス図とオブジェクト図も作んなきゃいけないし
結局ケイスケホンダのジャンケン作ることにした
結局ケイスケホンダのジャンケン作ることにした
740デフォルトの名無しさん
2019/09/03(火) 21:36:59.59ID:VgehgunL741デフォルトの名無しさん
2019/09/03(火) 22:59:40.18ID:29yFlgBG まあすべては委譲です
というか抽象化のためのパターンです
というか抽象化のためのパターンです
742デフォルトの名無しさん
2019/09/04(水) 09:05:55.41ID:42AhKM7p >>728
コードポイントで合ってるはず。
文字符号の1つずつの番号の場所をコードポイントと言う。
例えば、ASCIIコードなら、A の文字の番号である 0x41 の占めている
場所みたいなニュアンスがある。
コードポイントで合ってるはず。
文字符号の1つずつの番号の場所をコードポイントと言う。
例えば、ASCIIコードなら、A の文字の番号である 0x41 の占めている
場所みたいなニュアンスがある。
743デフォルトの名無しさん
2019/09/04(水) 09:20:24.49ID:42AhKM7p >>742
追伸。なお、0x41の番号そのもののこともコードポイントと言う。
番号に就いては単に「コード」とも言うが、2019年現在において
単に「コード」と言ってしまうと、プログラムの内の命令が並んでいる
部分のことを指すことが多くて混乱が生じやすいので、文字符合の
番号に対しては、「コード」ではなく「コードポイント」という
ことがある。「文字符号」と言ってしまうと、ShiftJISの体系そのもの、
UnicodeやUTF8の体系そのものを指すことも有り、どうしても曖昧さが残る。
そこで、0x41という番号そのものの事を言っていることを曖昧さなく
示したい場合には、文字符号ではなく「コードポイント」ということがある。
追伸。なお、0x41の番号そのもののこともコードポイントと言う。
番号に就いては単に「コード」とも言うが、2019年現在において
単に「コード」と言ってしまうと、プログラムの内の命令が並んでいる
部分のことを指すことが多くて混乱が生じやすいので、文字符合の
番号に対しては、「コード」ではなく「コードポイント」という
ことがある。「文字符号」と言ってしまうと、ShiftJISの体系そのもの、
UnicodeやUTF8の体系そのものを指すことも有り、どうしても曖昧さが残る。
そこで、0x41という番号そのものの事を言っていることを曖昧さなく
示したい場合には、文字符号ではなく「コードポイント」ということがある。
744デフォルトの名無しさん
2019/09/04(水) 10:36:53.55ID:BMbMsP6d int (*exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT;
上記はtypedef struct内に書かれていた関数ポインタの宣言で、
返り値がint、引数が(struct bContext *, struct wmOperator *)の関数ポインタexecなのは分かりますが
最後のATTR_WARN_UNUSED_RESULTって何でしょうか? 関数宣言って引数宣言の後に何か書けましたっけ?
上記はtypedef struct内に書かれていた関数ポインタの宣言で、
返り値がint、引数が(struct bContext *, struct wmOperator *)の関数ポインタexecなのは分かりますが
最後のATTR_WARN_UNUSED_RESULTって何でしょうか? 関数宣言って引数宣言の後に何か書けましたっけ?
745デフォルトの名無しさん
2019/09/04(水) 10:46:36.08ID:3LCw+twW746デフォルトの名無しさん
2019/09/04(水) 11:46:27.08ID:peiZ6Bip 今時なら[[nodiscard]]か
747デフォルトの名無しさん
2019/09/04(水) 12:57:05.98ID:/jMgnxhx いくつか用意した文字列の中から1つをランダムで表示するってどうやればいいかな?
748デフォルトの名無しさん
2019/09/04(水) 13:11:23.43ID:OPoewtpz 配列辺りにぶっ混んでインデックスを乱数にして取り出すとか
749デフォルトの名無しさん
2019/09/04(水) 18:37:03.73ID:A7beDSD/ std::minstd_rand mr
std::uniform_int_distribution<> ui(0,StrS.size()-1);
StrS[ui(mr)];//<- what?
大雑把にこういう感じ?
std::uniform_int_distribution<> ui(0,StrS.size()-1);
StrS[ui(mr)];//<- what?
大雑把にこういう感じ?
750デフォルトの名無しさん
2019/09/04(水) 19:21:28.58ID:+/XA3LOY StrSのSは何の略だ
751デフォルトの名無しさん
2019/09/04(水) 19:22:06.69ID:A7beDSD/ 複数形。
文字列の配列だから。
文字列の配列だから。
752デフォルトの名無しさん
2019/09/04(水) 23:10:27.71ID:3YkDCQ2q >>747
#include <stdio.h>
#include <stdlib.h>
#define STR_MAX 5
const char *pszText_s[STR_MAX] = { "aaa", "bbb", ・・・・・・・ };
int main() {
int idx = (int)( ((float)rand()) * STR_MAX / RAND_MAX );
printf( "mojiretsu = %s\n", pszText_s[idx] );
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define STR_MAX 5
const char *pszText_s[STR_MAX] = { "aaa", "bbb", ・・・・・・・ };
int main() {
int idx = (int)( ((float)rand()) * STR_MAX / RAND_MAX );
printf( "mojiretsu = %s\n", pszText_s[idx] );
return 0;
}
753デフォルトの名無しさん
2019/09/04(水) 23:13:18.96ID:HOiCfRXh なんだそのクソの塊は
754デフォルトの名無しさん
2019/09/04(水) 23:23:06.05ID:A7beDSD/ >>752
C言語ですねぇ。C++だったら、<random>使いたいところですね。
C言語ですねぇ。C++だったら、<random>使いたいところですね。
755デフォルトの名無しさん
2019/09/04(水) 23:29:14.08ID:3YkDCQ2q なぜCで済むのにC++を使おうとするのか。
何のメリットがあるのか。
基礎が大事。
何のメリットがあるのか。
基礎が大事。
756デフォルトの名無しさん
2019/09/04(水) 23:29:55.89ID:NHTKoQQB ここ何のスレだと思ってるのおじさん
757デフォルトの名無しさん
2019/09/04(水) 23:33:21.57ID:3YkDCQ2q そもそも基本的にCもC++の一部なのでC風に書いたものはC++の回答としても
間違いではない。
「C++でのやり方」と言ってもC++は歴史が長いため、色々なやり方がある。
また最新の仕様を使うことがベストな選択とは限らず、むしろ分かりにくく
なることも多い。
間違いではない。
「C++でのやり方」と言ってもC++は歴史が長いため、色々なやり方がある。
また最新の仕様を使うことがベストな選択とは限らず、むしろ分かりにくく
なることも多い。
758デフォルトの名無しさん
2019/09/04(水) 23:34:44.99ID:3YkDCQ2q759デフォルトの名無しさん
2019/09/04(水) 23:36:41.47ID:HOiCfRXh > また最新の仕様を使うことがベストな選択とは限らず、むしろ分かりにくく
> なることも多い。
自分がわからないだけでしょ
> なることも多い。
自分がわからないだけでしょ
760デフォルトの名無しさん
2019/09/04(水) 23:36:50.55ID:3YkDCQ2q C++ は、もともとCにclassの概念を追加したものと言われている。
今回の様にclassを使うメリットが無い場合は、C++の内、
昔からあるCの部分で十分である。エンジニアリングの世界では
「simple is best」
だ。
今回の様にclassを使うメリットが無い場合は、C++の内、
昔からあるCの部分で十分である。エンジニアリングの世界では
「simple is best」
だ。
761デフォルトの名無しさん
2019/09/04(水) 23:38:38.42ID:3YkDCQ2q >>759
新しい機能はC++委員会が好き勝手に追加しているだけで、
学ぶ意味が無い。
しかも、あなたも分かってないのに、人を馬鹿にするのはいかがなものか。
まずは動くコードが大事で、最新のやり方を使うことは重要ではない。
変に難しくしても意味がない。
新しい機能はC++委員会が好き勝手に追加しているだけで、
学ぶ意味が無い。
しかも、あなたも分かってないのに、人を馬鹿にするのはいかがなものか。
まずは動くコードが大事で、最新のやり方を使うことは重要ではない。
変に難しくしても意味がない。
762デフォルトの名無しさん
2019/09/04(水) 23:39:05.43ID:NHTKoQQB >>749
の方がシンプルじゃねーか
の方がシンプルじゃねーか
763デフォルトの名無しさん
2019/09/04(水) 23:41:17.68ID:3YkDCQ2q >>762
頭がおかしい。
頭がおかしい。
764デフォルトの名無しさん
2019/09/04(水) 23:41:42.83ID:HOiCfRXh better Cとか言ってる奴らが老害だってよくわかるね
765デフォルトの名無しさん
2019/09/04(水) 23:57:17.61ID:twmgvXS9 Cで書いてもええけど
> ((float)rand()) * STR_MAX / RAND_MAX );
この乱数に対する意識の低さがくそ
> ((float)rand()) * STR_MAX / RAND_MAX );
この乱数に対する意識の低さがくそ
766デフォルトの名無しさん
2019/09/04(水) 23:58:00.42ID:8IyIvdim rand()なんか使ってる時点で商用ソフト書かせちゃいけないセキュリティ意識皆無のカスだって自白してるようなもの
767デフォルトの名無しさん
2019/09/05(木) 00:01:08.35ID:wSq6T90P >>765
間違えてた。正しくはこうだと思う:
int idx = (int)( ((double)rand()) * (STR_MAX - 1) / RAND_MAX );
まだ間違いがあるかも知れんが。
間違えてた。正しくはこうだと思う:
int idx = (int)( ((double)rand()) * (STR_MAX - 1) / RAND_MAX );
まだ間違いがあるかも知れんが。
768デフォルトの名無しさん
2019/09/05(木) 00:09:37.75ID:wSq6T90P >>766
知らなかっただけで、std::uniform_int_distribution のような便利なライブラリが
あるんだったらそっちを使ったほうがいい。
本当は、古いCに昔から入っているような rand() はアルゴリズムが良くなくて
モンテカルロシミュレーションなどでは余り良い結果が出ない。
昔やってみて分かった。ネットに転がってたもっといいアルゴリズムの乱数に
変えてみたら結果が良くなった。
知らなかっただけで、std::uniform_int_distribution のような便利なライブラリが
あるんだったらそっちを使ったほうがいい。
本当は、古いCに昔から入っているような rand() はアルゴリズムが良くなくて
モンテカルロシミュレーションなどでは余り良い結果が出ない。
昔やってみて分かった。ネットに転がってたもっといいアルゴリズムの乱数に
変えてみたら結果が良くなった。
769デフォルトの名無しさん
2019/09/05(木) 00:10:44.20ID:5Cw7Ao7f 今どきrand()が論外なのは別として剰余も知らんの?
770デフォルトの名無しさん
2019/09/05(木) 00:12:59.23ID:5Cw7Ao7f 何だこいつ
> 新しい機能はC++委員会が好き勝手に追加しているだけで、
> 学ぶ意味が無い。
↓
> 知らなかっただけで、std::uniform_int_distribution のような便利なライブラリが
> あるんだったらそっちを使ったほうがいい。
> 新しい機能はC++委員会が好き勝手に追加しているだけで、
> 学ぶ意味が無い。
↓
> 知らなかっただけで、std::uniform_int_distribution のような便利なライブラリが
> あるんだったらそっちを使ったほうがいい。
771デフォルトの名無しさん
2019/09/05(木) 00:15:04.65ID:ymsvBiyv772デフォルトの名無しさん
2019/09/05(木) 00:16:17.70ID:wSq6T90P773デフォルトの名無しさん
2019/09/05(木) 00:18:23.32ID:wSq6T90P >>772
間違い修正:
誤:int idx = rand() % RAND_MAX;
正:int idx = rand() % STR_MAX;
このように書いた場合、直感では、RAND_MAXがSTR_MAXの倍数で無い場合
に均等確率にならないハズ。
間違い修正:
誤:int idx = rand() % RAND_MAX;
正:int idx = rand() % STR_MAX;
このように書いた場合、直感では、RAND_MAXがSTR_MAXの倍数で無い場合
に均等確率にならないハズ。
774デフォルトの名無しさん
2019/09/05(木) 00:18:43.26ID:M7+W0IyT 低劣なrand()のさらに劣悪な下位ビットを使うくらいならアホが書いてる形の方がまだましではある
rand()みたいな小学生でも推測できる危険極まりないゴミクズを使ってる時点で目くそ鼻くそだけど
rand()みたいな小学生でも推測できる危険極まりないゴミクズを使ってる時点で目くそ鼻くそだけど
775デフォルトの名無しさん
2019/09/05(木) 00:21:02.57ID:wSq6T90P776デフォルトの名無しさん
2019/09/05(木) 00:21:37.88ID:5Cw7Ao7f Nが2の累乗でない限り%Nは上位ビットも影響するけど
777デフォルトの名無しさん
2019/09/05(木) 00:22:46.70ID:wSq6T90P778デフォルトの名無しさん
2019/09/05(木) 00:25:08.12ID:M7+W0IyT 初心者にこそrand()みたいな絶対に使ってはいけない危険物を紹介したらダメだろうが
お前は初心者が入力読み込みの質問したらgets()を教えるのか?
お前は初心者が入力読み込みの質問したらgets()を教えるのか?
779デフォルトの名無しさん
2019/09/05(木) 00:25:11.59ID:wSq6T90P >>774
>低劣なrand()のさらに劣悪な下位ビットを使うくらいならアホが書いてる形の方がまだましではある
あなたは、% と & を間違えてませんか。
x % y : x を y で整数除算したときの余り。
x & y : x と y の BIT 積 (and)。
>低劣なrand()のさらに劣悪な下位ビットを使うくらいならアホが書いてる形の方がまだましではある
あなたは、% と & を間違えてませんか。
x % y : x を y で整数除算したときの余り。
x & y : x と y の BIT 積 (and)。
780デフォルトの名無しさん
2019/09/05(木) 00:25:49.83ID:wSq6T90P >>778
rand()のどこが危険なのですか?
rand()のどこが危険なのですか?
781デフォルトの名無しさん
2019/09/05(木) 00:27:59.92ID:6cA0wVT5 てか、今時まだ下位ビットに周期性あるのかね?
782デフォルトの名無しさん
2019/09/05(木) 00:30:09.80ID:ymsvBiyv std::minstd_rand は 線形合同法デス。
!
おわかりいただけただろうか。
mt19937最強!
!
おわかりいただけただろうか。
mt19937最強!
783デフォルトの名無しさん
2019/09/05(木) 00:32:23.63ID:M7+W0IyT784デフォルトの名無しさん
2019/09/05(木) 00:33:07.37ID:wSq6T90P >>781
rand()が 閉区間 [0, RND_MAX] の整数値を均等確率で出力する場合に、
idx = rand() % STR_MAX;
とすると、STR_MAX が RND_MAX の約数で無い場合は端数のような部分が
同じ場所に集中して出現したり、抜けが起きたりして、idx は
[0, STR_MAX] の区間の整数値を均等確率で生じさせません。
rand()が 閉区間 [0, RND_MAX] の整数値を均等確率で出力する場合に、
idx = rand() % STR_MAX;
とすると、STR_MAX が RND_MAX の約数で無い場合は端数のような部分が
同じ場所に集中して出現したり、抜けが起きたりして、idx は
[0, STR_MAX] の区間の整数値を均等確率で生じさせません。
785デフォルトの名無しさん
2019/09/05(木) 00:35:35.65ID:wSq6T90P >>783
>劣悪だからっつってんだろ
>あんなもの数個連続で観測されただけで簡単に予想できる
>うっかりセッションIDやら初期パスワードやらの生成に使おうもんなら簡単に7pay案件だ
>あんたそんな事も知らないでプログラマーやってんの?
自分の専門は自然科学系で、シミュレーションで使うことはありますが、
パスワード系で使うことは一度も想定したことが有りませんでした。
>劣悪だからっつってんだろ
>あんなもの数個連続で観測されただけで簡単に予想できる
>うっかりセッションIDやら初期パスワードやらの生成に使おうもんなら簡単に7pay案件だ
>あんたそんな事も知らないでプログラマーやってんの?
自分の専門は自然科学系で、シミュレーションで使うことはありますが、
パスワード系で使うことは一度も想定したことが有りませんでした。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- クリスマスの「予定なし」54% [少考さん★]
- 地震 [Hitzeschleier★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
- お前らって中華行ったら◯ンゲ使う???
- おさかなさんあつまれえ
- 【悲報】人気女性落語家、気づいてしまう…「将棋をみてたら女性にのみ女流棋士などと"女"をつけられる、くだんな笑」 [339712612]
