C++相談室 part155

■ このスレッドは過去ログ倉庫に格納されています
2021/03/24(水) 12:07:15.39ID:R+oM8cup
※前スレ
C++相談室 part154
https://mevius.5ch.net/test/read.cgi/tech/1610096040/

テンプレここまで
2021/03/24(水) 13:01:36.77ID:eNnFQgEr
2get
2021/03/24(水) 13:37:00.67ID:uPqg/PBu
msysの thread_local が、わりとちゃんと動くのがありがたい
昔は当たり前にクラッシュしてた
2021/03/24(水) 23:24:56.26ID:DDXRo65G
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
2021/03/25(木) 00:13:37.31ID:eNzfljpt
>>4
このテンプレはいつまで貼るの?
2021/03/25(木) 00:32:41.48ID:BFmdRR/m
たぶん最初に書いた本人以外はだれも気に入ってないと思う
もうやめたほうがいい
2021/03/25(木) 13:58:38.53ID:VH1J0VUJ
glslのnoise関数のような、特定の入力に対して、特定の乱数を返すような関数はありますか?C++に
2021/03/25(木) 14:41:00.85ID:Vfj9f3xX
完全に(疑似)乱数でよいのなら、
毎回シード設定すれば入力で一意に決まる乱数値を取得できるけど、それでええのん?
2021/03/25(木) 14:43:13.48ID:Vfj9f3xX
例えばこんなの
srand(input);
return rand();
2021/03/25(木) 17:26:16.86ID:BFmdRR/m
ハッシュと乱数を混同して質問しているに500ペリカ
2021/03/25(木) 17:48:06.49ID:VH1J0VUJ
>>9
それですね
ちょっとその発想を元に作ってみます
2021/03/25(木) 18:04:14.88ID:eNzfljpt
C++ の乱数生成器 (linear_congruential_engine, mersenne_twister_engine, subtract_with_carry_engine)
は厳密に挙動が定められているので環境によらず同じシードを与えれば同じ乱数列が得られることは保証される。
(余談だが分布生成器 (uniform_int_distribution など) は完全に同一の挙動は保証されない。)

rand は同じシードからは同じ乱数列になるという保証はあるけど、
他の環境に持って行ったとき (別の処理系を使ったとき) に同じになるという保証はない。
乱数の質についても保証がない。

必要な性質がよくわからんのだが、再現性・移植性が重要なら rand はあまりよくない。
2021/03/25(木) 21:06:48.96ID:VH1J0VUJ
自作のXorShiftでやってみようと思います
スレの流れがそんなに速くないようなので後にコードレビューでもお願いするかもです
2021/03/26(金) 07:33:40.04ID:YT9UBnI1
乱数表作るだけだろ
くだらん
2021/03/26(金) 13:48:17.35ID:OLCpSFIZ
コードレビューつってもなぁ、
明らかに未定義を踏んでるとか間違った結果を出力をするとかならともかく、
インターフェイスが綺麗かとか命名が適切がとかいった要素は状況に依存するんで
そこらへんの前提を共有できている状態じゃないと
かなりざっくりした一般論しか言えないと思うよ。
2021/03/26(金) 14:17:07.80ID:xeE+mVbe
7ですが、すいませんでした
場違いだったようなのですべて撤回します
2021/03/26(金) 17:49:14.73ID:Bae43LUT
QZあたりが疑似乱数の理論について本一冊分ぐらい語るのではなかったの???
2021/03/26(金) 17:50:06.84ID:Bae43LUT
乱数表をどうやって作るつもりなのかとそこはかとなく疑問が………
2021/03/26(金) 19:01:34.23ID:Rskx+UE5
ラジウムとガイガーカウンターでも使うんだろ
2021/03/26(金) 20:57:56.27ID:Bae43LUT
ガイガーカウンターは放射線源が強力だとカウントミスりそうであんまり高速な乱数生成に向かない
という印象
2021/03/26(金) 22:44:42.48ID:Bae43LUT
ていうか量子乱数発生器はスタジアムや野球場など人間が数千人〜数万人規模で集まり
興奮するようなところで量子乱数発生器を使うと乱数発生が偏るという実験結果がある
とモーガンフリーマンが言ってたから信頼できない
やっぱ第一選択はシードを19936ビットフルい与えてのmersenne_twister_engineなのでは……
2021/03/26(金) 23:42:48.79ID:uaj8R912
ハッシュと乱数を混同してただけでしょ
2021/03/27(土) 00:11:40.23ID:h1BsDCwR
>>17
大抵の用途には、私は MT を使いますね…
2021/03/27(土) 00:35:45.49ID:Ly0w36WW
メルセンヌツイスタは統計的な性質は良いが状態がやや大きい (普通のパソコンではもはや気にしないでよいレベルだが) ので、
いつでも選択するには過剰な気もする。
25デフォルトの名無しさん
垢版 |
2021/03/27(土) 00:52:36.37ID:tZBSsbg+
スレの流れをぶった切って申し訳ない
boostってもういらなくなったの?
15年ぶりにC++でプログラミングすることになったので
その辺の事情がよく分かりません
2021/03/27(土) 00:54:27.35ID:3iQ+aU3D
当然要るよ
多次元配列クラスとかまだSTLに入ってない
2021/03/27(土) 01:11:01.48ID:Ly0w36WW
個別には Boost 以外の選択肢もあると思うけどある程度に統一されてないと扱いづらいし、
Boost にあるものは Boost を使っておくのが無難な選択には違いないと思うよ。
2021/03/27(土) 01:17:35.37ID:1M7dxEop
boostはヘッダライブラリ自称してる割にビルド必要で使いづらいねん
2021/03/27(土) 01:26:03.40ID:Ly0w36WW
>>28
> ヘッダライブラリ自称

そんなことどこかに書いてあるの?
公式ページのトップにもビルドについて言及があるし、ヘッダのみみたいなニュアンスはないと思うんだが。
30デフォルトの名無しさん
垢版 |
2021/03/27(土) 02:13:45.76ID:FxCpf6Ea
ヘッダのみで使えると過剰に宣伝してるライブラリが多い。

と、あわしろ氏が申しておりました。
2021/03/27(土) 02:17:07.41ID:p6NWEZH2
あわしろってキンコン西野みたいなもん?
2021/03/27(土) 08:19:32.12ID:MzcivD4R
ビルド必要なのは別にいいけどbjamが糞すぎるからさっさと捨てて欲しい
2021/03/28(日) 12:33:00.93ID:11viivYN
class hoge{
public:
constexpr static int aaa[2] = { 1, 2};

static hoge get_hoge();
}

hage::hage()
{
hoge *_hoge = hage::get_hoge();

int tmp;
int i = 0;
tmp = _hoge->aaa[i];
}
とすると、ビルド時、undefined reference to `hoge::aaa'と出るけど、
tmp = _hoge->aaa[0];とするとエラーが出ない
これってなぜ起きて、どうやったら変数を使ってアクセスできるようになるの?
開発環境はSTM32CubeIDEのver1.6.0
2021/03/28(日) 13:05:07.76ID:hha5l0Ce
ちらちら混ざってる hage は hoge の間違いなのか何か別物なのか。
2021/03/28(日) 13:05:58.70ID:IQVnw+L7
>>33
サンプルコードが不足しているので何をどうしたいのかよくわからんのだが、
i が定数式じゃないと駄目だよ。
2021/03/28(日) 13:47:16.98ID:5/FvdRpo
>>35
うそやん?
2021/03/28(日) 17:41:23.48ID:11viivYN
>>34
hogeにはアプリで使う色々な定数が入ってて、hageがそれを参照するようにしてるんだ。
んなもんdefineでいいとかそういう話は置いといて、iが変数だと何がまずいの?
2021/03/28(日) 19:20:58.11ID:PRWHgvt6
三段活用はhoge、fuga、piyoだろ!常識だぞ
ハゲとか言う人にはもう教えません
2021/03/28(日) 19:23:19.81ID:YX9+FjRw
piyoは初めてみるな
2021/03/28(日) 20:20:31.89ID:W2vCV6FV
>>39
それなりに知られてるぞ
https://ja.m.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0
2021/03/28(日) 21:37:33.38ID:hha5l0Ce
>>37
> constexpr static int aaa[2] = { 1, 2};
クラススコープの↑は変数の定義に見えるけど実は宣言でしかなくて、プログラム中に実体を置くには別途定義が要る。
ただし const な整数型や constexpr な変数が定数式の文脈で即座に値として利用される場合はコンパイル時に直接定数として
置き換えられるので、定義が無くてもビルドできる。

定数 0 ではなく変数 i を添え時にすると定数式ではなくなるので定義が必要になる。
2021/03/28(日) 22:16:07.85ID:11viivYN
>>42
分かったようなわかんないような感じなんだけど、
例えば、
class hoge{
public:
constexpr static int aaa[2];

static hoge get_hoge();
}

hoge::aaa[2] = {1, 2};

みたいにするってこと?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況