[過去ログ] スレ立てるまでもない質問はここで 152匹目 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
752(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2020/03/18(水) 01:24:44.51 ID:dwzmIRAh(1/5) AAS
>>750
> 0~255を0~3の範囲に変換したいのですが、if文を使わないスマートな方法ってありませんか?
正比例を習ったよね?
756(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2020/03/18(水) 02:17:06.92 ID:dwzmIRAh(2/5) AAS
普通の正比例と違うのは値が離散的であること。
とりあえず、0から255までを三等分するときを考える。
255÷3==85.
0〜84は85個の整数。
その次は85〜(85+84)、つまり85〜169.
そのまた次は170〜(170+84)、つまり170〜254.
おおっと255が余った。これは離散的だから当たり前、256個の整数を3で割るから余りがでる。
757: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2020/03/18(水) 02:28:21.11 ID:dwzmIRAh(3/5) AAS
キレイには割り切れない。キレイに分割することはあきらめて、比例の式を使うと (x*3)/255が得られる。
検算しよう。0は0に変換される。255は3に変換される。C言語では正の整数の割り算は切り捨てなので、254は(254*3)/255==2となる。こうなると3になるのは255だけになる。
これはまずい。となれば、3に変換される数を増やすために分子を少し大きくする。
(x*4)/255.
しかしこの式では255は4に変換されてしまう。そこで分母を大きくする。
(x*4)/256.
758(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2020/03/18(水) 02:40:52.65 ID:dwzmIRAh(4/5) AAS
>>751三等分じゃなくて4等分だったね。
759: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2020/03/18(水) 02:44:25.11 ID:dwzmIRAh(5/5) AAS
ゼロを含むんだから、0から3までは4個。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.655s*