京都大学(京大)情報学研究科の木村欣司特定准教授は、数式処理による16次方程式の判別式計算に成功したことを発表した。 ものづくりにおいて、材料が持つ特性、組み合わせた時の強度やバランス、外部刺激に対しての耐久性などを解析する際に、コンピュータによる計算が用いられるが、現在では、ものづくりで必要となる計算が複雑になっており、高性能なサーバや、専用のアルゴリズムを活用して計算が行われる。そうした、ものづくりに必要な計算の1つである方程式の判別式計算は、江戸自体の和算家(数学者)である関孝和にルーツがあり、建築物の強度をそのままに材料を削減することや、半導体の製造時の歩留まりを向上させることなど、ものづくりに必要な技術となっており、より高い次数の判別式計算ができれば、品質の高い製品を短期間で設計することが可能になる。 これまでコンピュータで計算可能な判別式計算は15次方程式まで、複雑化・高機能化
プログラミングコンテストで、特に幾何の問題とか解いてると「EPS変えたら通った」みたいなことがよくある。僕のような自分に優しい人間は「まあ本質的な部分は合ってたんだしいいか」と考えてしまいがち。この態度を「甘い」ととる人もいればそうでない人もいるだろう(妥協すべきラインというのはどこかに存在するので)。 ロバストな計算幾何というのは研究分野が存在するくらいなので、本質的に難しいものだと思われる。でも、最低限これくらいは知っといたほうがいいんじゃないの、というのはあると思うので思考をメモしておく。タイトルに(1)とついてるのは後から追加するかもしれない、という意味。 浮動小数点数(IEEE 754)の仕様とかは色々調べるのが面倒なので後で書く。TopCoderの問題では非正規化数のせいでTLEとか出たし、知っておいて損はないと思う。最低限持っておく知識としては、仮数部が52ビットなので、一回
ゲーム理論,賭けの科学を中心としたサイトNABENAVI.netです. CONTENTS ゲーム理論のナビゲータ 研究活動 賭けの科学 じゃんけん研究 プロフィール リンク 連絡先・アクセス いろいろ このサイトは 更新履歴 新着情報 - 最近の更新 「じゃんけん研究」のページを更新.(2010.09.18) 待望の「じゃんけん研究」のコンテンツ作成へ踏み出しました.まず,話題の「わたなべじゃんけん」の解説とビデオを公開!(2008.04.26) ゼミナールゲーム理論に誤り・誤植が見つかっています(特に演習問題の解答).皆様には御迷惑をおかけしています.正誤表と訂正を「ゼミナールゲーム理論入門」のページに掲載しています.(2008.04.23) 「ゼミナールゲーム理論入門」の発売に関して,コンテンツを整理しました.古い講義資料などはなくなりました.これまでの講義ノートは「ゼミナールゲーム理
今すぐフォローすべきnode.js界のスーパーエンジニアの便乗です。 競技プログラミングは、最近ようやく書籍化されたものの、やはり殆どの知識はインターネットに頼ることとなります。解けない問題を独力で解決するのは非常に難しく、特にリアルタイムのコンテストなどに出場される際には、こうした人々をフォローし、考え方・解法を徐々に身に着けていくことで、様々な問題を解決できるようになるでしょう。 筆者の主な活動場所がTopCoderなので、TopCoderの人がメインになっちゃうかと思われます。あと無断で紹介してるので、マズかったら教えてください。 紹介前の補足 実績を書く際に、TopCoderのRatingを引用するので、TopCoderのレーティング分布を紹介しておきます。 この分布における、Rating 2200以上の赤い人が、RedCoderと呼ばれる人達です。 Algorithm部門において
離散一様分布(りさんいちようぶんぷ、英: discrete uniform distribution)は、確率論や統計学における離散確率分布の一種であり、有限集合の全ての値について、等しく確からしい場合である。 確率変数が n 個の値 k1, k2, …, kn を同じ確率でとりうるとき、離散一様分布と言える。任意の ki の確率は 1/n である。離散一様分布の単純な例としてサイコロがある。その場合の k がとりうる値は 1, 2, 3, 4, 5, 6 で、1回サイコロを振ったとき、それぞれの値が出る確率は 1/6 である。2個のサイコロを振って和をとると、もはや一様分布ではなくなり、とりうる値(2 から 12)によって確率が変わってくる。 離散一様分布の確率変数がとりうる値が実数の場合、累積分布関数を退化分布を使って表すことができる。すなわち、 ここで、ヘヴィサイドの階段関数 は、x
はじめに 第1の関門 プログラミングレッスン1 簡単なプログラム 変数を使う よく使うデータ型一覧 ワンポイント〜文字と文字列 計算をしよう よく使う演算子一覧 キーボード入力を受け付ける (scanf) 条件分岐をする (ifとswitch) 繰り返し処理 (forとwhile) break文 goto文 ワンポイント〜文 虫取り教室 コメントアウト printf()デバッグ プログラミングレッスン2 配列変数 多次元配列 関数を作る return文 変数のスコープ ワンポイント〜引数の渡し方 数値処理の達人 数学関数 桁をそろえて表示 乱数 8進数と16進数 最後に 参考文献 C言語は、(例えばBASICやFortranと比べて)非常に機械に近い非人間的な言語です。よって、コンピュータの内部構造まで教えたくなるのですが、ここではそこをぐっとこらえます。本稿の目標としては、大学の簡単な課
実装だけなら適当なサイトのコピペで終わるので、 ソース例を見せながらご説明しますね。ソースは文末です。 今回はXorshiftで行いました。 基本的な情報系の知識はあるものとして、中級レベルから解説します。 まず、xor128(void)についてです。 なぜこの関数が乱数を発生させられるのか? 固定値しか帰ってこなさそうなのに。 通常、関数内で値を変更しても抜けたら無効となります。 しかし、static宣言することで、次回も保存しておけます。 この仕組みと、32bit符号無し整数、 シフト演算、排他的論理和の組み合わせで、 要は"適当な計算"をしてるのです。 ※ 本当に適当だと永久的かつランダムな乱数は発生しません。 本当は厳密に計算されて論文で裏づけされてます。 ここは論文レベルになるので、興味があれば調べてください。 以上の関数により、32bitの乱数が返ってきます。 次に、1~14の
2016-11-19[土] C++TemplateのつもりでC#Generics使ってハマる(初歩) 人様のソース改修でロクに知らないC#をここ1,2ヶ月さわってた。 といってもそのソースもC#慣れしたわけでないC系ユーザーが書いたような感じで ある意味助かったのだけれど、コピペ膨れなソースだったので、処理をまとめようと C++Template 的に Generics を使おうとして...ちょっとハマった。 C++だと #include <stdio.h> class Foo { public: void Run() { printf("Foo!"); } }; template<class T> class FooMgr { public: void Run() { T().Run(); } }; class Bar : public Foo { public: void Run() {
2008-09-07 擬似乱数とは 擬似乱数とは、プログラムにより生成する「乱数っぽく見える数」のことだ。 本物の乱数(自然乱数)とは完全に予測不能な数のことで、 これは厳密に言えば、プログラムでは絶対に生成することはできない。 (自然乱数を得る手段としては、回路の熱雑音などの物理現象を利用する方法などがある。) 擬似乱数は計算(多くの場合は漸化式)によって作るため、 計算の初期値がわかれば予測が可能である。 予測可能であることは乱数の性質に反するが、シミュレーションを行う場合などには都合がよい。 またゲームでも、ランダムに弾が発射されるようなシューティングゲームのリプレイを再生する場合などに、 乱数を再現する必要性が出てくる。 擬似乱数を生成する方法は様々なものが考えられている。主な方法の名称を以下に示す。 この記事でとりあえず言いたいことは、XorShiftが手ごろでいいね!ということ
Xorshiftは疑似乱数列生成法の1つである。George Marsaglia(w:George Marsaglia)が2003年に提案した。演算が排他的論理和とビットシフトのみであるため高速である[1] などの特徴がある。 #include <stdint.h> struct xorshift32_state { uint32_t a; }; /* The state word must be initialized to non-zero */ uint32_t xorshift32(struct xorshift32_state *state) { /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */ uint32_t x = state->a; x ^= x << 13; x ^= x >> 17; x ^=
Example random distribution of Xorshift128 Xorshift random number generators, also called shift-register generators, are a class of pseudorandom number generators that were invented by George Marsaglia.[1] They are a subset of linear-feedback shift registers (LFSRs) which allow a particularly efficient implementation in software without the excessive use of sparse polynomials.[2] They generate the
簡単なモンテカルロシミュレーション編 半径1の円の面積を求めるモンテカルロ 一辺が2の長さを持っている正方形をまず考えます。 縦横方向にx,y座標を置き、各辺の中点を、それぞれx,y軸に交わるようにします。 こうすると、半径1の円を正方形に入れると、その中心が(0,0)に来ます。 今、-1〜+1の範囲で二つの乱数が振られた時(正方形の中の一点をランダムに指定した時)、その2乗和が1以下になったなら、これは円に入ったと言えます。 何度かこれを試行して、円に入った割合に正方形の面積(2×2=4)を、この割合にかけると、円の面積が求められるでしょう。というもの。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { double i,k,n,r,x,y,c1,c2,C1,C2; n = 10000000
質問の意味は、次の3行を云いたいのでしょうか? rand関数を使った式の意味が分かりません。式は 最小値 +(int)( rand() * (最大値 - 最小値 + 1.0) / (1.0 + RAND_MAX) ) ① です。この式は何を求めようとしているのでしょうか。よろしくお願いします。 この質問だったら、回答は以下の通りです。 式は次の形と等価です。 最小値 + (int)( (最大値-最小値 + 1.0) * (rand()/(1.0 + RAND_MAX)) ) ② これは、細かいことを抜きに表現すれば 係数 = (rand()/(RAND_MAX) 最小値 + (最大値-最小値) * 係数 ) ③ 係数が1ならこの値は 最小値 + (最大値-最小値) * 1 = 最大値 となり 0なら 最小値 + (最大値-最小値) * 0 = 最小値 となります。 RAND_MAX は r
Example of shuffling five letters using Durstenfeld's in-place version of the Fisher–Yates shuffle The Fisher–Yates shuffle is an algorithm for shuffling a finite sequence. The algorithm takes a list of all the elements of the sequence, and continually determines the next element in the shuffled sequence by randomly drawing an element from the list until no elements remain.[1] The algorithm produc
4月からPFIで働いてます。海野です。 今日は単語の話をします。読み物的な話なので軽く読んでください。 テキストデータなどの自然文を機械処理するときには、まず最初に単語に分割するということをよく行います。一般的にはMeCabやChasenといった形態素解析エンジンに投げて行います。形態素と単語の区別という話もあるのですが、ここでは大雑把に「連続した文字列の単位」くらいの意味で話します。 検索という文脈ですと形態素インデックスという言葉がありますが、これは検索の最小単位を文字単位ではなくて形態素の単位にするということです。例えば「東京都」は「東京」「都」に分かれるため、「京都」というクエリに対して見つかるのを防ぐなど、精度を上げる効果があります。反面、深刻な検索漏れを引き起こす可能性があるため嫌われることが多いです。こうした漏れは検索に限らず、テキストマイニングなどの文脈でも問題となることが
TwitterのTLで知ったのだが、少し前に海外の掲示板で"sleep sort"というソートアルゴリズムが発明され、公開されたようだ。このアルゴリズムが面白かったので紹介してみる。 Genius sorting algorithm: Sleep sort 1 Name: Anonymous : 2011-01-20 12:22 諸君!オレは天才かもしれない。このソートアルゴリズムをみてくれ。こいつをどう思う? #!/bin/bash function f() { sleep "$1" echo "$1" } while [ -n "$1" ] do f "$1" & shift done wait example usage: ./sleepsort.bash 5 3 6 3 6 3 1 4 7 2 Name: Anonymous : 2011-01-20 12:27 >>1 なん…だと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く