• ベストアンサー

PCごとに違う値ってないのでしょうか・・・

こんにちは。 突然ですが、PCごとに違う数値ってないのでしょうか? C言語で取得したいのですが、そもそもPCごとというのは具体性がないので、マザーボードやメモリ、CPUなど何でもいいので、世界に2つとないようなPCごとの数値って取得する方法はないでしょうか・・・ ひとつ試していて思ったのですが、rand()はプログラムを起動するたびに同じランダムな数字を返してきますよね?ですが、PCによって初期値が違うことがわかりました。どうしてですか? 分かりにくい質問ですみません。回答をお待ちしていますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • bulgaris
  • ベストアンサー率50% (8/16)
回答No.4

OSの力を借りるのは必須ですね。 Windowsに関してならば、良さげなのがあったので紹介しておきます。 アプリケーションが一意に判断できる値を得る方法 http://www.cisnet.or.jp/home/tsuneoka/win32tech/11.html

参考URL:
http://www.cisnet.or.jp/home/tsuneoka/win32tech/11.html
genki140
質問者

補足

さっそくNetbiosを試してみようと思ったのですが、使い方がぜんぜん分かりません;; 具体的にどうやったらMACアドレスが取得できるのでしょうか・・・ 何度も何度もすみません・・・

その他の回答 (7)

回答No.8

C言語を使うのに「標準出力」「リダイレクト」を知らないのでは、話になりません。 ※ GUIに慣れきった初心者の典型か。今はGUIしか使ったこと無いのにコンピュータを使いこなしているかのような錯覚を持つ人が多いですからねぇ。

回答No.7

なぜ、そういうことがしたいのでしょうか? みなさんの解答が理解できないのなら、この問に答えることが有効でしょう。

回答No.6

UNIX系のOSであれば、/sbin/ifconfigコマンドでMACアドレスを「表示」できます。 たしか、標準出力に表示しているのでリダイレクトを使ってファイルに落としておけば、後でそのファイルをオープンして読み込めばいいでしょう。

genki140
質問者

補足

せっかく教えていただいたのに悪いのですが、よくわからないんです;; それってC言語でできるんですか?

  • TT414
  • ベストアンサー率18% (72/384)
回答No.5

>違うPCに移動して実行すると、今度は並びもさっきとぜんぜん変わるんです rand,srandにこんな機能ありましたっけ? コンパイラ名を教えてもらえませんか?

genki140
質問者

補足

どうやらrandの初期値はOSによって変わってるみたいです^^; だめですね・・・これは使えませんでしたorz

回答No.3

以前、ハードディスク(例えば、c:\)の、ボリュームシリアルを使っていたソフトを見たことがあります。 これ、少なくとも、「ほぼユニーク」ではあると思いますが。 あと、インテルの Pentium III 以降は、CPU にシリアル No. がついています。もっとも、これは、(パソコンの)出荷状態で disble にすることになっていますから、ほとんど使えないでしょうが。  逆に、自分が管理する小さな領域のマシンだけに適用するのであれば、使えるかもしれません。

回答No.2

NICが搭載されているという前提ですが、MACアドレスは必ずユニークな値です。 >PCによって初期値が違うことがわかりました そうでないと乱数になりませんから。 srand関数で定義しない限り、必ずランダム値を返します。 但し、乱数と言っても正確には擬似乱数です。 ある規則によって形成された乱数です。

回答No.1

ネットワークカードが付いていれば、そのカードのID(MACアドレス)は、2つとして存在しません。 ランダム関数に関しては、わかりません。 でも、ランダム関数を使う前に、種の初期化をしますよね、普通。 その初期化に使う整数に、年月日時分秒をyyyymmddhhmmssで与えると、2度と同じ種にはなりません。

genki140
質問者

補足

回答ありがとうございました。 さっそくMACアドレスをC言語で調べる方法を調べてみたのですが、まったく分かりません;; それらしきサンプルが見つからず、こまっています。 どなたかキーワードでもいいので教えていただけないでしょうか・・・ それと、これは補足ですが、 プログラムを実行後srandを呼び出さず、randのみを呼び出すと、何回実行してもrandの返す値は同じ順になるんです (1回目の起動=1,3,5,2,7だとすると、2回目の起動=1,3,5,2,7になり、同じならびになりますよね) で、そのプログラムを違うPCに移動して実行すると、今度は並びもさっきとぜんぜん変わるんです (1回目の起動=2,1,8,3,9だとすると、2回目の起動=2,1,8,3,9になり、これもまた同じならびになりました) これを利用できないかと思ったのですが、どうなんでしょうか・・・

関連するQ&A