[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 20:18 / Filesize : 259 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングの為の数学と算数 vol.2



1 名前:デフォルトの名無しさん [04/09/05 16:22]
プログラムに必要な数学、算数に関する話題について
語りましょう。TIPS/Q&Aスレです。

813 名前:全知全能者 [2007/04/25(水) 05:10:58 ]
いつの世も物を言うのは「力」だ。

原始時代は「筋力」
江戸時代は「家柄」
そして現代は「金」

現代社会では金を持っている人間が強い。
革新的なパラダイムの転換が無い限りこの価値観は変わらない。

814 名前:デフォルトの名無しさん [2007/04/25(水) 15:49:14 ]
そして、この先は『人柄』が力となる。

815 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 00:22:43 ]
ピクセルのフェード計算についての質問をさせてください。
実行したいのは以下の式です。

// dst[0 〜 255]: 転送先ピクセルの色要素)
// src[0 〜 255]: 転送元ピクセルの色要素)
// rate[0 〜 255]; srcの比率 )
// (すべてbyte型です)
//
フェード式
 = (dst * (255 - rate) + src * rate) >> 8;
 ~= dst + (((src - dst) * rate) >> 8);
  (~= はニアリーイコールです)

これを実現するために以下のような計算方法がよく使われています。

1) short tmp = (short)src - (short)dst; //< 符号付き2バイト数に拡張します
2) tmp = (short)(tmp * rate); //< 演算結果の下位2バイトを結果として受け取ります
3) tmp = (word)tmp >> 8; //< 無符号型としてシフト()
4) byte result = (byte)(dst + (byte)tmp); //< tmpの下位1バイトのみを足し込みます

これだけ見ると変に複雑に見えますが、
実は計算にはmmxを使っていて4要素まとめて演算します。
そこで、1要素につき2バイトの範囲内で
(src - dst){-255 〜 255} * rate{0 〜 255}
の符号付き乗算をしないといけないため、このようなことになっています。

816 名前:815 mailto:sage [2007/04/29(日) 00:24:22 ]
>>815の続きです^^

例えば、src=0, dst=255, rate=255の場合、
結果としては0が期待されますが、実際に計算してみると
1) tmp = -255 = 0xff01
2) tmp = (short)(0xff01 * 0xff) = (short)0xfff01ff = 0x01ff
3) tmp = 0x01
4) result = (byte)(0xff + 0x01) = 0x00
となり正しい結果が得られます。

また、src=200, dst=225, rate=200の場合は、
204程度が望まれますが、実際に計算してみると
1) tmp = -25 = 0xffe7
2) tmp = (short)(0xffe7 * 0xc8) = (short)0xc7ec78 = 0xec78
3) tmp = 0xec
4) result = (byte)(0xe1 + 0xec) = 0xcd = 205
とほぼ正しい結果が得られます。

上の式は有名なライブラリで使われている式でもあり、
正しいことはほとんど保証されているのですが、
これがなぜ正しいのか証明できる方はいませんか?
少なくとも自分には理解できないです。
文献でもいいです。よろしくお願いします。

817 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 00:48:54 ]
>>815

どうしてもなにも、定義そのままの計算式じゃん。

> 1) short tmp = (short)src - (short)dst; //< 符号付き2バイト数に拡張します

(src-dst) は、-255〜+255 なので、short に納まる。

> 2) tmp = (short)(tmp * rate); //< 演算結果の下位2バイトを結果として受け取ります

(src-dst)*rate は、-65280〜+65280 なので、2の補数で17ビット必要→shortだと1bit足りない→後述

> 3) tmp = (word)tmp >> 8; //< 無符号型としてシフト()

((src-dst)*rate)>>8 は -255〜+255なので、2の補数で9ビット必要だが、2)の時点で9ビット目の情報は落ちている

> 4) byte result = (byte)(dst + (byte)tmp);

ここで、8ビット整数で計算するのだから、上記3)の所で、結果は8ビットあれば十分。9ビット目の値は要らない。

8ビットで演算するのに「-1(0xff)を足す」のも「255(0xff)を足す」のも、まったく同じ結果になることに気付けばOK。
3)の結果で、-255 が出てきたのを、+1 として処理してもまったく問題ない。
→ -255〜-1 を +1〜+255 で処理しても結果は同じ。

818 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:31:47 ]
>>817
おお!
8ビットまで精度を保証すればうまくいくってことね^^
どうもありがとう

819 名前:デフォルトの名無しさん [2007/04/29(日) 18:19:52 ]
数学の知識はそりゃあった方が良いと思うけど、
一番大事なのは物事を合理的に考える事が出来るか。

820 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 19:08:45 ]
合理的に考えれば2chで質問するほど無駄なことは無い訳だが

821 名前:デフォルトの名無しさん [2007/04/29(日) 19:46:50 ]
自由な曲線(ベジェ曲線か、折れ線の点列)を円弧のあつまりで近似したいんですが、
ヒントはないでしょうか? と、質問した者です。

点列が1個の円や直線にフィットするかどうかは、最小二乗法などで、
解決できると思います。
したがって、どういう風なグループで円弧や直線にすると、さらに最小になるか、
という問題になるような気がするのですが、そういう問題には、どのような考え方で臨めばよいでしょうか。






822 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:18:42 ]
やりたい事が判らないから困ってしまうのだけど、
円は3点で決まるから、3点毎に円弧を描いても、近似と言い張れば近似になる。

823 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 20:40:03 ]
4点あるときにどの3点を選んで円弧にするかっていう話?

824 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 01:30:11 ]
円弧だけじゃなくて、適宜直線も使いたいってことかい?

825 名前:デフォルトの名無しさん [2007/05/02(水) 18:06:14 ]
たとえば、N点(3000点とか)からなる折れ線の図形があったとして、人間は図をかけば、適度にこの部分は円弧だろうとか、直線だろうとか、あてはめることができます。
それを、精度をあたえることで、コンピュータに計算で円弧+直線に解かせられないでしょうかね。


826 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 18:27:41 ]
使う円弧の数に制限が無いのなら、>>822の方法で指定点での誤差ゼロで描ける

使う円弧の数を減らしたいという要求があるなら
単純に端から3点でフィッティングして、次の点が誤差の範囲内ならと処理してもいいし
最小2乗円を求めては、誤差の範囲が収まるならとやってもいいとおもう

ただし、誤差だけでは、つなぎ目がガクガクに見えるという事になる
だから、それが嫌なら、点との誤差が幾ら以内で、接続が滑らかであるというような条件を追加しないといけない

827 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 19:42:29 ]
>>825
用途を書いてくれればもう少し具体的なアドバイスが出てくると思われ

828 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:19:07 ]
>>825
滑らかじゃなくていいなら既に色々レスついてるからそれ参照。誤差ゼロ。
滑らかである必要があるなら、確かに精度(許容誤差)を与える必要はあるだろう。
滑らかって何とか言うならもっと勉強しなさい。

829 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:50:19 ]
ペゾルドにかいてなかったっけ?

830 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 23:20:02 ]
ttp://www.emit.jp/prog/prog_div.html
の高速除算なのですが、
どうしてこれで正しく計算できるのか分かる方いませんか?

あと、割られる数が負数のときでも上手くいくような
つまり
X / D = Q (Qは整数)
のときに
-X / D = -Q
となるような高速除算の方法を知っている方はいますか?

831 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 01:13:49 ]
830のリンク先はなーんか誤差が出そうなやり方だなー。
定数除算なら、誤差項を1ビット誤差以下に抑えればいいから、こういうことは出来るけど。


32bit同士の乗算がオーバーフローせずに使える場合。
X/3 = [X/3 + 2n/(3*2^32)] (∵ 2n/(3*2^32) < 1bit )
= [ (2^32 + 2)/3 * (n/2^32) ]
= 1431655766 * n / 2^32
= 1431655766 * n >> 32



832 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 01:16:49 ]
あ、途中でXがnになっちまった……。
nが負なら最後に1足してくんなまし。

833 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 07:36:56 ]
>>830
Web上にある情報を、どれも正しいと思うな
Q=trunc(X/D +0.5) と計算したい筈なのに

m = 2*n-------------------1)
R = (2^m - 1) / D ---------2)
Q = (R * X + 2^n) >> m ------3)  から>>m を2のベキに変更して
Q = (R * X + 2^n)/2^m   Rに代入して
Q = ((2^m - 1) / D * X + 2^n)/2^m
Q = (2^m - 1) /2^m * X/ D + 2^(n-m)
   ~~~~~~~~~~~~~~~~      ~~~~~~~
(2^m-1)/2^m は1ではない
2^(n-m) は 0.5 ではない

これは単に使いたかった範囲で巧くいっただけだろ

834 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 11:48:36 ]
>>831,832
ありがとうございます。
一応、プログラムを組んで実験してみたのですが、
違う結果しか得られませんでした。
自分の理解が足りていないのかもしれません。
チェック用プログラムをアップしますので、確認していただければ幸いです。
kissho.xii.jp/1/src/1jyou6388.lzh

>>833
整数における割り算なので、やりたいのは四捨五入ではなく切り捨て、
つまりQ=trunc(X/D) です。
あと、使える値の範囲も>>830のページ上に書いてありますよ。

835 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:28:10 ]
>>834
831に書いた方法は、
R=(2^32 + F)/Dのとき、F=D-1では、多くのDで誤差が出る。
大事なのはRが割り切れることと、F/2^32が1bitより小さい正の値になること。
これが満たされない場合は、
R=(2^33+F)/Dとか、R=(2^34+T)/D-2^32なんかを使う必要がある。
(おまけに最後の例は最後に2^32分の補正が必要)
以上のようにR の決定がそんなに単純じゃないんだー。
だから定数除算って書いた。
っていうかハッカーのたのしみって本を買えばこういうことが書いてある。
興味あるならオススメ。

836 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 17:04:05 ]
>>830
swox.com/~tege/divcnst-pldi94.pdf

> Division by Invariant Integers using Multiplication
>
> 4 Unsigned division
> 5 Signed division, quotient rounded towards 0
> 6 Signed division, quotient rounded towards -∞


837 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 18:06:56 ]
ターゲットのチップにも寄るだろうけど、Intel系でって話なら普通に割り算命令使った方が速いんじゃね?

838 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 18:13:07 ]
>>837
実測してみないとなんともだけど割り算の結果を遅延評価するといいかもね。


839 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 23:59:10 ]
>>835
そうなんですか^^
ハッカーの教科書は持っていたのですがこんな話題があるとは知りませんでした。
ちょっと研究してみようと思います。

>>836
そのページを見てみたのですが、正確にやるのは結構大変なんですね^^
よく使う定数の除算のみを最適化して
あとはテーブルなりなんなりで処理することにしました。

>>837
pc11.2ch.net/test/read.cgi/tech/1168399966/99-
↑を見て欲しいのですが、x86のdiv命令は
おそらくもっとも効率化がめざましい命令の一種です。
最新の石ならばそのままが一番速いと思うのですが、
昔のCPUを考慮するとなかなかそういうわけにもいきません。

840 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:08:18 ]
>>839
この手の高速化は高級言語で記述してもコンパイラが糞なら無意味だし、そもそも可読性が落ちるので歓迎されない。
そうなるとアセンブラでの記述に限定されるわけだが、肝心のターゲットが書かれていないので議論するだけ無駄。
というかそもそもこのスレ向きの話題じゃない。

841 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:55:37 ]
なんでいまさら昔のPCのことを考慮する必要があるんだ



842 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 01:26:26 ]
>>840
その理屈で行くとハッカーのたのしみや>>836の内容は
まったく無意味ってことになりますね。
もちろんそんなことはなくて、
ビット演算やコンピュータ用数学(?)にはある程度の普遍性があります。
だから、ターゲットが明確に決まっていなくてもある程度は意味はあります。
(一応、特定アーキテクチャ専用の話題は避けたつもりなのですが、
div命令のレイテンシの話題はたしかにスレ違いですね^^)

>>841
ここでいう「昔のCPU」とは、Pentium4やAthlonXPクラスの
(多分)今一番普及しているCPUのことです。
さすがに考慮しないわけにはいかないです^^

843 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 06:19:35 ]
>>842
アセンブラ系スレなら有意義なんだろうが、それ以外の場所じゃ完全に無意味。
>ビット演算やコンピュータ用数学(?)にはある程度の普遍性があります。
これもない。現にシフト命令が異様に遅いコアが存在する。
5年10年前なら確かにその言い分は通用したが、複雑化したx86系CPUで
除算命令のような数クロックを稼ごうという時にターゲットも指定しないなんてありえないだろ?

844 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 07:11:01 ]
>>843
> アセンブラ系スレなら有意義なんだろうが、それ以外の場所じゃ完全に無意味。

んなことない。定数除算→乗算の最適化をやってくれない環境はあるし、自分
が仕事で使った RISC とかは加減シフトが実効 1 サイクル、乗算が 2 サイク
ルに対して除算命令は 33 サイクル(中で何やってるかわかるな。しかも除算
命令実行中に割り込みが入ると割り込み終了後に再度除算命令を実行し直す)。

> 現にシフト命令が異様に遅いコアが存在する。

後学のために教えてくれ。


845 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 07:46:16 ]
>>844
だから、それはアセンブラ系のスレでやってくれということでしょ

846 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 08:04:05 ]
負数での符号については423から、同じような事一度やってるからな。
速度だけの問題なら他でやって欲しい所。

847 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 09:09:48 ]
>>843
自分がもともと質問していたことは、除算→乗算+シフトの変換方法です。
(このスレのおかげで定数除算の最適化という分野があることを知りましたし、
特定の除算の最適化もできそうな感じです。
その点は本当に感謝しています)

確かに石によって演算速度の違いがあることは事実なのですが、
そういったこともふまえて、対象となるCPUをつらつら挙げて
CPU別の最適化方法をここで聞いた方がよかったのですか?
もちろん、自分的には大歓迎なのですが^^

>>846
収穫もあったことですし、自分はそろそろ去りたいと思います^^

848 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 10:32:12 ]
>CPU別の最適化方法をここで聞いた方がよかったのですか?
最適化スレもあればアセンブラスレもあるのに?

849 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 10:51:11 ]
特定のMPUの話じゃなければ充分メタな話出来るだろ…。
そういう命令セットの定義とかも数学の範疇じゃないのか?

850 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 11:24:26 ]
>>848
>CPU別の最適化方法をここで聞いた方がよかったのですか?
>>843
>除算命令のような数クロックを稼ごうという時にターゲットも指定しないなんてありえないだろ?
に対するレスです。
当然、自分の考えは>>848さんと同じで「それはスレ違いでしょ?」です。

>>849
命令セットの定義が数学の範疇だというのははじめて聞きました。
そうなのかもしれないのですが、
自分は特定アーキテクチャの最適化の話はここでするべきでは無いと考えたのです。

851 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 11:45:33 ]
何がやりたいから判らなくなってるが、ようするに、
R>0 Xは正負のint 範囲で

Q=trunc(X/D) を
Q= (int)(((long)X*(long)R + k) >> (long)m )

で計算したいが 適切な R と m を求むって事だろ?



852 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 11:45:45 ]
使える命令とその計算コストを厳密に定義した上で最適な計算を
求める問題ってのは、特に並列計算の分野で見ることがある研究だね。
実際のCPUくらいのコストモデルでやるのはかなり大変だと思うけれど

853 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 11:46:45 ]
ウザ…スレ違いだって言われてんだから素直に移動しろや。
少なくともここはアセンブラの話題振るスレじゃねえことくらいは理解してんだろ?

854 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:17:53 ]
離散的数の演算は数学だ。
ただ、その実装手段が大抵の場合アセンブラしかないだけ。
CPUの除算が遅いとか言い出したヤツが最初にスレ違い。


855 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 23:01:21 ]
車のスピード違反みたいだなw
除算は多倍長文字列でやった事あるけど、
別と比べて極端に難しかった。

856 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 01:50:28 ]
結局実装の話になると思うけどね。
ここがム板である限り。

857 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:32:05 ]
>>855
除算は四則のうち、唯一「トライ&エラー」的要素が必要になってくるからな。
「除法の定理」という、それほど単純ではない性質に則った結果にしなければ
いけないという縛りがその原因だろう。

858 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:26:24 ]
どっちかっつーと数学板向きの話題だな

859 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:21:46 ]
除算を自作でやってみると、0除算がなぜダメなのかが分かる。

860 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:28:33 ]
ニュートン法で除算を解く手順はどうなりますか?

861 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:37:57 ]
www.tensyo.com/urame/prog/ALGO.HTM
> a/b
>ニュートン法でcを更新すれば良い結果が得られます
> ニュートン法x-f(x)/f'(x)を適用するのに
> c*b-2^n=0 f(x)=b*x-2^n f'(x)=b とやったのではダメです
> b-2^n/c=0 f(x)=b-2^n/x f'(x)= 2^n/x^2
> x:=x-b*x^2/2^n+x=(x+x-b*x^2/2^n)=x+(x*(1-b*x/2^n));
> c:=c+(c*(2^n-b*c))/2^n と更新します





862 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:44:08 ]
>>859
除算をわざわざ自作しなくても簡単に判ることですが?
それとも、r = p / d を r * d = p に変形することもできないんですか?

863 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 09:10:47 ]
>>862
それだと
0 / 0 が定義出来てしまいますが?


864 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 10:23:45 ]
>>863
あんた馬鹿? dが0のときにpが0になるrは、一意には決まらないんですが。
つまり、0 / 0は数学的には解があるってこと。1 / 0とは事情が違う。

865 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 11:06:44 ]
>858
全くだなw

866 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:17:07 ]
北極の氷が融けて水面が上がるという話があるが、それがありえないのは
アルキメデスの原理を学んでいれば理解出来る筈だ。

実際にグラスに氷を入れて、水をすりきれ一杯にして、水がこぼれない実験をするまでは判らないのだろう

0で割るとどうなるかも、そりゃ数式を弄くれば予想は出来るが
それと、実際に計算させてみての実感とは違うものなのだろう

867 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 14:43:02 ]
海に浮かんでる氷が溶けても海面上がらないけど、
地面の上に乗ってる氷が溶けると海面上がるよな。

北極って、大陸ではないけど、
小さな島状の部分とか浅瀬もなく、完全に氷が海に浮いてる状態?

868 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 14:50:03 ]
実際に計算することと、計算過程をプログラミングすることは、違う。

>>867
どこまでを北極というかによって変わるが、基本的に北極海には問題になるほどの陸地はない。
勿論北米北欧ロシアの海岸線を含むわけだが、面積比で言えば問題にならない。

869 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:19:40 ]
問題なのはグリーンランドだよ
映画でアルゴアが言ってた

>>866
グラスに氷とかのすぐできるような実験もしないで
「本に書いてあるからそうなんです」って胸を張るような
中世の暗黒時代さながらの学問態度は取りたくないものだな
馬の歯は何本あるんだっけ

870 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 15:47:10 ]
www2.odn.ne.jp/seimei/essay271.htm

でも、氷河期が終わるんなら、氷床も無くなって当然では?


871 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:23:24 ]
>>866
>アルキメデスの原理を学んでいれば
うみのみずはしょっぱいです。でも、ほっきょくのこおりはしょっぱくないです。



872 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:41:13 ]
北極の氷でも海の水が凍ったものは 塩を含むだろう。
その上に降り積もった部分は違うだろうけど

873 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:43:46 ]
>>872
面白い考え方だな

874 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:09:45 ]
www.littlewaves.info/marine/wq_sgravity.htm
塩分濃度が35ppt で 温度15℃の時の比重が1.0263

つまり、塩が溶けると 1.035/1.0263 = 1.0085倍に膨張するといいたいわけ?

875 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:15:29 ]
>>874
つ[浮力]

876 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:15:36 ]
>>872
>海の水が凍ったものは 塩を含む
もしそうなら、半導体価格は今より何倍も高いはずだ。

877 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:16:37 ]
北極の氷はプログラムと関係あんのか?

878 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:17:15 ]
数学とは関係があるかもしれない。

879 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:18:24 ]
>>878
そんなことは聞いてねぇよ、北極の氷はプログラムと関係あんのかって聞いてんだよ

880 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:20:10 ]
>>879
あると思うの? んなことマジで聞いてるの?

881 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:23:48 ]
>>880
雑談でスレ埋めるな、って嫌味も通じない馬鹿か…



882 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:31:33 ]
そんな当たり前のことを承知の上でおちょくっていることにも気付けない?

883 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:32:49 ]
それもまた雑談なのだ。 同じ雑談なら、面白がる方がいいだろ
さて
blog.livedoor.jp/yuge15978/archives/8126608.html
のように、真水が凍った氷が溶けて水面が上がのが正しそうに見えるけど
氷が溶けると、塩水の濃度は下がるのだから、濃度が下がる事により容積は下がるので
その効果が打ち消す可能性もあり、やっぱり実験しないと判らない

884 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:35:54 ]
>>876
海氷の塩分濃度は10〜12gだそうだ。 海水の1/3程度だとはいえ、まだ塩分はそれなりにあるみたい

885 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:42:39 ]
>>871
たまに、海水は真水より比重が大きいのだから、
水銀の上で氷が溶ければ水面が上がるように、水面が上がるという人がいる。

でも、これは海水の主成分が水である事を忘れている。
氷が溶ければ真水ではなく、塩水になり、塩水は薄まる。
塩分濃度と比重は変化が小さい時には比例するので、
トータル水面は変わらないのさ。

極端に言えば、海水中の塩分と、水を別けて計算すればいい。

886 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 20:59:20 ]
ええと、
  氷の比重0.917
  水の比重1.000
海水の比重1.024
海水上に出る氷の容積は、1-0.917/1.024 = 0.104
氷が水になると1-1/1.024 = 0.023

一旦は水面は氷*2.3%だけ持ち上がるよね? その後塩水と混じると水面が下がるわけ?

887 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:48:44 ]
1

888 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:52:39 ]
2

889 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:54:08 ]
3

890 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:56:04 ]
4

891 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:59:28 ]
5



892 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:06:04 ]
6

893 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:16:00 ]
>>876
ヘンリーラウールの法則によると凍った海水には塩が含まれる


894 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:05:39 ]
7

895 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:08:06 ]
8

896 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:17:38 ]
9

897 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:35:25 ]
10

898 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:57:15 ]
11

899 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 02:43:23 ]
埋めようとしてるのは
はずかしいボケをしたお友達かな?

900 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 08:17:30 ]
スレ違いよりかはマシなんじゃないの

901 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 08:18:11 ]
痲疹よりは感染力低いな




902 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:26:08 ]
       __
 /\   /  /
 \ \ /  /______   _____     ___ ___    ___
  .\//  _______/ /__  __/ [][] _| |_| |__ _| |_
 /\ /__/ ______      / /     |    _  | |_  レ'~ ̄|
 \ \  /         /     |  |___      ̄|  | / / /   /| |
  .\/  / / ̄/ / ̄/  /      \__|     |  |  ̄ /_  /  | |_
   / ̄ ̄   ̄   ̄    ̄/              |_|     |__|   \/
 /\ ̄/ / ̄/ / ̄/  / ̄
/  / /   ̄   ̄ ̄   ̄/     
\/   ̄ ̄ ̄ ̄ ̄/  / ̄        2007 Summer @ Shou-nan
          / ̄  /            www.2ch.net/sea/
           ̄ ̄


903 名前:デフォルトの名無しさん [2007/06/04(月) 19:59:53 ]
このスレ vol3 は必要ですか?

904 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:16:03 ]
次スレの心配は950超えてからでいいよ

905 名前:デフォルトの名無しさん [2007/06/07(木) 14:35:14 ]
去年からはじまった totoBIGというクジがあります。
これは 引分、勝ち負け を0,1,2  の3値で表現して、14試合分を ランダム発券するというものです
売り上げの40%が一等原資、10%を2等以下で別けます。
300円でキャリーが無ければ上限3億円 キャリーがあれば6億円が1等賞金の上限です

でいつ買えば得なのか、還元率を求めたいと思いました。

2等以下はまず平均に出るとして 300円中 30円 とし、
1等原資は 売り上げX口として300*X*0.4+CY (CYはキャリー金額)
1等が1口以上出る確率は(1-(1-1/3^14)^X なので

30+(300*X*0.4 +CY)*(1-(1-1/3^14)^X)/X

と求まります。
が、上限が6億なので、155円以上の結果は正しくないと思えます。
どういうプログラムを作ればいいでしょう?

906 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:14:24 ]
980超えてからでOK

907 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:56:57 ]
>>905
P = 1/3^14 として
X 中 1個が出る確率* 当選金
X 中 2個が出る確率* 当選金
X 中 3個が出る確率* 当選金
を2項分布で確率を求めて累積したらいいんじゃないの?

もしかして、nCr とかオーバーフローするのかな?
ならポアソン分布で近似すればいいって、これも オーバーフローするか・・・・困ったね

908 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:06:19 ]
電卓で計算させたら、
やっぱりポアソン分布の方がオーバフローし易いみたいだな。

n個中k個の確率は2項分布なら
n!/(k! * (n-k)!)*p^k*(1-p)^(n-k) で、階乗をそのまま計算したらオーバフローするから
kの大きい所まで計算する必要はないから、 for 文で計算すればオーバーフローしないんじゃないかな

と無責任に言ってみる

909 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 17:26:18 ]
>>905
いつ買っても損をする。
なぜなら賭博とはそういうふうに出来ているから。

totoがダメだったのは、賞金頭割りだから順当な結果の回は1等数千円とかザラ、荒れるとビックリするほど当らない。
BIGはどうなるかわからんけど、totoで客離れちゃったからキャリー期待するのは難しいんじゃないかなぁ。
計算すんのは楽しいけどねw

910 名前:905 mailto:sage [2007/06/07(木) 18:38:35 ]
>>908
ありがとう。その式で計算させました。 JavaScriptですが
function combination(n, k)
{
var i,c=1;
for(i=1;i<=k;i++){ c=c*(n+1-i)/i;}
return c;
}
function P(n,k)
{
var p0=1.0/Math.pow(3, 14);
if(k==0) return Math.pow( 1-p0 ,n );
return combination(n, k) * Math.pow(p0,k) * Math.pow( 1-p0 ,n-k );

}

function kangen(CY , X)
{
var i;
var gensi=X*300*0.4+CY;
var umax=6E8;
if(CY==0) umax=3E8;//キャリーが無い時は上限3億円
var sum=0;
for(i=1;i<20;i++) { //iが1当の数
var a=Math.min(gensi/i,umax); //1等の配当は原資を当選数で割った金と上限の小さい方
p=P(X,i);
sum += i*a*p;//当選金総額x確率を掛算
if(p<1E-6)break;//計算誤差が6桁以下になれば終わり
}
return 30+sum/X;
}

911 名前:905 mailto:sage [2007/06/07(木) 18:43:51 ]
計算結果は、
キャリー 100万口 200万口 300万口 400万口 500万口 600万口 700万口 800万口 900万口
  0億円   53円  71円  79円  82円  86円  86円  88円  89円  89円
  1億円   72円  88円  101円  112円  113円  115円  117円  120円  123円
  2億円   90円  105円  117円  119円  119円  121円  123円  126円  127円
  3億円   109円  122円  126円  124円  125円  126円  129円  130円  130円
  4億円   128円  134円  130円  129円  130円  132円  134円  133円  133円
  5億円   144円  137円  135円  134円  136円  138円  136円  136円  136円
  6億円   145円  140円  139円  140円  142円  140円  139円  139円  139円
  7億円   147円  144円  143円  145円  143円  142円  142円  142円  143円
  8億円   149円  147円  148円  147円  145円  144円  144円  145円  144円
  9億円   151円  150円  150円  148円  147円  146円  147円  147円  146円
 10億円   153円  153円  151円  149円  149円  149円  149円  148円  147円
 11億円   155円  153円  152円  151円  150円  151円  150円  149円  148円
 12億円   155円  154円  152円  152円  152円  151円  150円  150円  150円
キャリーが4億でも還元率は50%の 150円ありません。
そして、いくらキャリーが増えてもやっぱり155円から還元率は増えません。
9億くらいキャリーが溜まって、やっと50%の還元率です。

計算があってるとすればヒドイ設計のクジです。



912 名前:905 mailto:sage [2007/06/07(木) 18:50:06 ]
あ、全体は、 htmlファイルに

<HTML><HEAD>
</HEAD>
<BODY>
/////////////// この間に >>910 のコードを入れる。///////////

var x,y;
document.write('<TABLE BORDER><TR><TD>キャリー');
for(x=100;x<1000;x+=100)document.write('<TD>'+x+'万口' );
for(y=0;y<20;y=y+1)
{
document.write('<TR>');
document.write('<TD ALIGN=RIGHT>'+y+'億円</TD>');
for(x=100;x<1000;x=x+100){
document.write('<TD ALIGN=RIGHT>'+Math.round(kangen(y*1E8,x*1E4))+'</TD>');
}
document.write('</TR>');
}
</SCRIPT>
</BODY>
</HTML>


913 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:50:42 ]
>>911
宝くじって大体そんなもんだよ。
もっとひどいこともある。
競馬は還元率75%らしいけどね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef