![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
#!/bin/bash
(1)BAR = `awk ' { printf("%d", srand()%10) }'`
(2)BAR = `awk '{ print srand()%10 }'`
(3)BAR = `awk '{ print int(10.0*rand()) }'`
echo "$BAR"
上記のように変数にランダム関数を代入したいのですが、うまくいきません。
awk '{ print int(10*rand()) }'
だけでうってみると、
2
2
8
………
のように、延々と続いてしまい、一回で終わらないのがとても気になります。
awk ' function hoge(n){ return 1 + int(rand()*n) } { print hoge(10) } '
のように、関数をからませてもうまくいきません。
どうか、解説をお願いします。
なお、OSはLINUXのFedora10で、Tera Termを使ってクライアントから操作しています。
No.3ベストアンサー
- 回答日時:
> もしよければ、 [ ] はどういうときに使用するものか(if文のカッコなのかなど)、 $2つの意味をご教授願えないでしょうか。
$RANDOMは,乱数を返します。
$RANDOM % 10は,$RANDOMを10で割った余りを返す式です。
$[$RANDOM % 10]は,$RANDOMを10で割った余りを返す式を評価してその値を返します。式を$[と]で囲むわけですが,$((と))で囲むのが普通のシェルのやり方ですが,bashの場合には$[と]も使えるのです。
他には`expr $RANDOM % 10`というやり方もありますね。
間違っていたらご指摘ください。>識者の方
この回答への補足
$(($RANDOM % 10)) と `expr $RANDOM % 10` でともに正常に動くことを確認しました。
今回は大変お世話になりました。
No.2
- 回答日時:
その「わからない点」は bash のマニュアルを読めば解決するかも.
この回答への補足
RANDOMに関して、発見しました
>>RANDOM このパラメータが参照される度に、 0 から 32767 までのランダムな整数が生成されます。 RANDOM に値を代入すると、乱数の列を初期化できます。 RANDOM を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
ブランケット([])と前方の$は、説明文がかなり長くてみつけられませんでした。
man bash [ ] では、でてこないみたいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- その他(プログラミング・Web制作) awkの BEGIN{RS=""} で空行を削除できるが、削除できる仕組みが分からない。 1 2023/05/02 14:14
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- Ruby パイソンプログラミング 2 2022/12/03 18:44
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) awkの$NR 2 2022/10/24 11:11
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- Ruby プログラミング 3 2023/06/09 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonの*
-
【至急!!!】python言語で本を見...
-
変数名に変数を使用
-
16進の10進変換について
-
perl
-
変数まとめて0に初期化する方...
-
c言語 16進数の2進数への変換
-
シェルで、ランダム関数を変数...
-
シェルスクリプト+perl
-
数値かどうかの判定方法
-
ポーリングとHTMLデータのリロ...
-
関数「exists」と「defined」の...
-
pythonで演算子を変数に代入す...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
VB6で、長い時間かかる処理...
-
実行時エラー 3020の対策
-
テーブル内でドロップダウンメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
16進の10進変換について
-
【至急!!!】python言語で本を見...
-
pythonで演算子を変数に代入す...
-
数値かどうかの判定方法
-
pythonの*
-
UWSCのSELECT文の記述方法
-
int(input("○○"))の使い方
-
関数「exists」と「defined」の...
-
c言語 16進数の2進数への変換
-
Perlにおける<?phpinfo();?>の...
-
I2C接続のLCDディスプレイを使う
-
シェルスクリプトで、空白(ス...
-
「HSP」でキャラコードを使って...
-
switch文のエラーについて
-
Use of uninitialized value ---
-
変数の中は文字列か数値か調べ...
-
perでメールが送信出来ない場合...
-
画面上再読み込みをさせたいの...
-
awkの正規表現での最左最短マッ...
-
文字列をスカラー変数として認...
おすすめ情報