【A】プリンキピア・マセマティカ【B】at PHILO
【A】プリンキピア・マセマティカ【B】 - 暇つぶし2ch120:考える名無しさん
25/07/13 18:01:34.25 0.net
import time

def find_twin_primes(limit):
"""
エラトステネスの篩を使って、指定された数までの双子素数を見つける関数
"""
print(f"{limit} までの双子素数を探します...")

# limitまでTrueのリストを作成(0と1は素数ではない)
is_prime = [True] * (limit + 1)
is_prime[0] = is_prime[1] = False

# エラトステネスの篩を実行
# i * i が limit を超えるまで調べれば良い
for i in range(2, int(limit**0.5) + 1):
if is_prime[i]:
# iの倍数をすべて素数ではない(False)にする
for multiple in range(i * i, limit + 1, i):
is_prime[multiple] = False

121:考える名無しさん
25/07/13 18:02:01.43 0.net
# 双子素数のペアを探してリストに追加
twins = []
for p in range(3, limit - 1):
if is_prime[p] and is_prime[p + 2]:
twins.append((p, p + 2))

return twins

if __name__ == '__main__':
# 探す上限を設定
UPPER_LIMIT = 100_000_000 # 0から1億までの双子素数を探索

start_time = time.time()
twin_primes_list = find_twin_primes(UPPER_LIMIT)
end_time = time.time()

# 結果の表示
print(f"\n見つかった双子素数の数: {len(twin_primes_list)} 個")

# 最初の10個と最後の10個だけ表示
if len(twin_primes_list) > 15:
print("最初の10ペア:", twin_primes_list[:10])
print("...")
print("最後の10ペア:", twin_primes_list[-10:])
else:
print("見つかったペア:", twin_primes_list)

print(f"\n処理時間: {end_time - start_time:.4f} 秒")

122:考える名無しさん
25/07/13 18:02:23.89 0.net
## -- End pasted text --

100000000 までの双子素数を探します...

見つかった双子素数の数: 440312 個
最初の10ペア: [(3, 5), (5, 7), (11, 13), (17, 19),
(29, 31), (41, 43), (59, 61), (71, 73), (101, 103), (107, 109)]
...
最後の10ペア: [(99997187, 99997189), (99997367, 99997369),
(99997871, 99997873), (99998447, 99998449), (99998609, 99998611),
(99999077, 99999079), (99999257, 99999259), (99999437, 99999439),
(99999539, 99999541), (99999587, 99999589)]

処理時間: 20.3896 秒

123:考える名無しさん
25/07/13 18:02:51.63 0.net
と、上記のように素晴らしい「双子素数」の出力結果が得られた。
0~1億までで双子素数を探索して、小さい方と大きい方の双子素数を
それぞれ10個ずつ表示させてみたが、大きい方の数でも、意外と、
指定上限の1億に近い地点で、ちゃんと双子素数が存在していることが、
この出力結果から見えて来るであろう

また、(0~1億までの範囲)で見つかった双子素数の数: 440312 個

とあるので、双子素数というのは、双子の割に、意外と存在する、
ということも分かる。処理時間も20秒程度で10億までに存在する
双子素数の探索が出来ているから、処理速度もそんなに悪くはない
ことであろう。ここでは、「エラトステネスの篩」というアルゴリズム
を使用している。これは、最初に素数リストを一気に作ってから
双子素数を探す方法であり、非常に高速なアルゴリズムになる


数論においては、素数がキーになっているので、この不思議な
ランダムさで出現する数に数学者が魅了されがちなのも何となく
想像されよう。私は別に素数ファンではないので、そこには
深入りするつもりはないのであるが。

124:考える名無しさん
25/07/13 18:03:25.06 0.net
ものはついでなので、実際の人間の双子出現率も調べてみた


人間の双子の比率(普通の兄弟姉妹との比較)
世界および日本・先進国の双子出生率

世界平均
世界全体で見ると、双子の出生率はおよそ「1,000出生あたり12組(1.2%)」、
つまり約42人に1人が双子として生まれます


アメリカ・ヨーロッパ
近年のアメリカやヨーロッパでは、双子の出生率は「1,000出生あたり30.7組(約3.1%)」
と、世界平均より高くなっています


日本やアジア
日本を含む東アジアでは、双子の出生率は「1,000出生あたり6~9組(0.6~0.9%)」と、
世界平均よりも低い傾向です

となった。

125:考える名無しさん
25/07/13 18:03:59.06 0.net
さっきやった双子素数の出現比率は、

440312/100000000 =

0.00440312 となったので、0.44%なので、日本やアジア人の双子出現率より
やや少ない比率で双子素数が出現していることが分かる。

いやあ、面白かったね。双子素数と本当の双子の出現比率に、相関が見られる
のだから。やはり、この宇宙は、あるいは、世界は数学化されているのかも
しれない

よって、数学を知る者は、この宇宙を知ることと等価になりそうだ

126:考える名無しさん
25/07/13 19:17:34.56 0.net
>>123
○ 処理時間も20秒程度で1億までに存在する
一般的な性能のPCで上記の双子素数探索コードを実行した場合の目安

| 探す上限 | 予想される処理時間 | 主な制約 |
|----------|--------------------|----------|
| 100万 | 1秒未満 | 全く問題なし |
| 1,000万 | 数秒 | 全く問題なし|
| 1億 | 数秒~数十秒 | メモリ(約100MB) |
| 10億 | 数分 | メモリ(約1GB) |
| 100億以上| 数十分~数時間 | メモリ(10GB以上)、時間 |

このように、アルゴリズムを工夫すれば、個人用のPCでも
驚くほど多くの双子素数を短時間で見つけることが出来る

127:考える名無しさん
25/07/13 19:49:08.87 0.net
低学歴の妄想

128:考える名無しさん
25/07/13 22:28:33.12 0.net
英単語「acyclic」の「a-」が否定の意味で使われる理由は、英語の語形成における接頭辞「a-」が「not(~でない)」という否定を表す役割を持つからです。「cyclic(循環的な)」に「a-」を付けることで「非循環的な」「循環しない」という意味になります[1]。

この「a-」は、ギリシャ語やラテン語由来の単語でよく見られる否定の接頭辞です。たとえば、「asymmetric(非対称の)」「atypical(非定型の)」なども同じ仕組みです。したがって、「acyclic」は「a(否定)」+「cyclic(循環的な)」で「循環しない(非循環的)」という意味になります[1]。

引用:
[1] acyclic とは 日本語訳と意味 | Goong.com - 新世代の辞書 URLリンク(goong.com)
[2] SLV9000 Flashcards by Shinsuke Sato URLリンク(www.brainscape.com)
[3] 第4回 バイアスの考え方,結果の解釈の仕方(疫学各論 3) - J-Stage URLリンク(www.jstage.jst.go.jp)
[4] 多変量解析 URLリンク(www2.kobe-u.ac.jp)
[5] [PDF] 非単調論理と常識推論 URLリンク(www.airc.aist.go.jp)
[6] 麻酔・集中治療と テクノロジー URLリンク(jsta.net)
[7] [PDF] 論 文 内 容 の 要 旨 - OPAC URLリンク(opac.ll.chiba-u.jp)
[8] 社会福祉研究法論特講 (2 単位) 通年 必 URLリンク(www.n-fukushi.ac.jp)
[9] [PDF] 第 9 章 治療後のサーベイランス・ 再発予防・再発治療 - 日本肝臓学会 URLリンク(www.jsh.or.jp)
[10] 教育研究成果報告書 URLリンク(www.hiroshima-u.ac.jp)

129:考える名無しさん
25/07/14 20:02:27.40 0.net
数学的であること、ただそれだけで良い

130:考える名無しさん
25/08/07 09:38:43.09 0.net
Just be mathematical, that's all.

131:考える名無しさん
25/08/14 16:54:08.34 0.net
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation, InputLayer

CONTEXT_NEURON_NUM=2
HIDDEN_NEURON_NUM=4

def generate_nn_model():
nn_model = Sequential()
nn_model.add(InputLayer((7+CONTEXT_NEURON_NUM,)))
nn_model.add(Dense(HIDDEN_NEURON_NUM, activation='sigmoid'))
nn_model.add(Dense(2+CONTEXT_NEURON_NUM, activation='sigmoid'))
return nn_model

def generate_action(nn_model, sensor_data, context_val):
nn_input = np.r_[sensor_data, context_val]
nn_input = nn_input.reshape(1, len(nn_input))
nn_output = nn_model.predict(nn_input)
action = np.array([nn_output[0][:2]])
context_val = nn_output[0][2:]
return action, context_val

132:考える名無しさん
25/08/14 16:54:35.54 0.net
def get_gene_length(model):
return len(encode_weights(model))

def encode_weights(model):
w = model.get_weights()
g = np.concatenate([x.flatten() for x in w])
return g

def decode_weights(model, gen):
w_shape = [wi.shape for wi in model.get_weights()]
w_size = [wi.size for wi in model.get_weights()]

w = []
tmp = gen
for shape, size in zip(w_shape, w_size):
w.append(tmp[:size].reshape(shape))
tmp = tmp[size:]
model.set_weights(w)

133:考える名無しさん
25/08/14 16:55:06.98 0.net
import sys, os
sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定
import numpy as np
from alifebook_lib.simulators import AntSimulator
from ant_nn_utils import generate_nn_model, generate_action, decode_weights, CONTEXT_NEURON_NUM, get_gene_length

nn_model = generate_nn_model()
# アウトプットの一部をコンテキストニューロンとして次回のインプットに回すための変数
context_val = np.zeros(CONTEXT_NEURON_NUM)

if len(sys.argv) == 1:
gene = np.random.rand(get_gene_length(nn_model))
else:
gene = np.load(sys.argv[1])
decode_weights(nn_model, gene)

# 引数はエージェントの数(Appendix参照)
simulator = AntSimulator(1)
simulator.reset()
while True:
sensor_datas = simulator.get_sensor_data()
action, context_val = generate_action(nn_model, sensor_datas[0], context_val)
simulator.update(action)

134:考える名無しさん
25/08/14 16:55:39.07 0.net
シミュレーション画面の内容

シミュレーション画面では、餌である化学物質が黄緑色で濃度を
持って青い環境内に分布している。赤い丸がエージェントになる。
エージェントが動いた場所は餌が吸収されるので、青い軌跡として
表示される。

だが、ここに出てくるエージェントは哲板住民のようにやる気や
向学心が全くなく、その場をグルグル回ったり、適当に進み続ける
だけで、まったく餌を集める様子がないのがその特徴である。


動画約30秒
URLリンク(imgur.com)

ニューラルネットワークを持つエージェントモデル(ランダムな遺伝子)

135:考える名無しさん
25/08/14 16:56:07.61 0.net
このシミュレーションで使われている「keras」は2017年にGoogleの
エンジニアが開発したもので、ニューラルネットワークの実装などに
使われるライブラリである。

NNではシグモイド関数がよく使われるが、ここでも

nn_model.add(Dense(2+CONTEXT_NEURON_NUM, activation='sigmoid'))

の中でそれが使われている。

136:考える名無しさん
25/08/14 16:56:37.15 0.net
ミリカンでも、生命というエージェントは自然情報から、進化や適応に
寄与するような意味(標識)を探索する、みたいな観点があったので、
上記のような生命系エージェントのシミュレーションは、ミリカンの
哲学的な観点にも近接したものとなっていることであろう。

生命によって、より良い状態を目指すのは自然であるのかもしれない。
だが、それを回避する場合は、それを目指すコストやリスクが高い、
と判断されたケースなどが考えられる。いわゆる、コスパが悪そうなので
寝そべり族でいいや、みたいなスタンスであり、哲学板住民に多い
自堕落な態度であるとも言える。

137:考える名無しさん
25/08/14 17:01:54.17 0.net
>>136
○ 生命にとって、

138:考える名無しさん
25/08/14 17:42:46.28 0.net
URLリンク(www.youtube.com)

( ^ω^)

139:考える名無しさん
25/08/14 17:58:10.66 0.net
An intellectually sophisticated person constantly zeros in on mathematics

140:考える名無しさん
25/08/17 13:32:46.77 0.net
私たちは腐った哲学溜まりに吶喊するJeannetteを見た


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch