乱数(Rnd)を用いて0から100までの数字をランダムに生成しそれらのデータをten(10,10)の1行1列目から10行10列目までに代入し各行の標準偏差を求め0列目に代入し全要素を出力するプログラムを作ってください

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/10/07 16:47:53
  • 終了:--

回答(8件)

id:nansya No.1

nansya回答回数40ベストアンサー獲得回数02003/10/07 17:45:58

ポイント14pt

OSや言語が指定されていませんのでお答えできませんが...、「学習・教育」に投稿されているので、おそらく質問の内容のソフトを宿題か何かで作ろうとしているのでしょうが、「作ってください」というよりは 具体的に分からない箇所を書かれたほうがいいかと思いますよ。

id:khayashi No.2

khayashi回答回数12ベストアンサー獲得回数02003/10/07 23:10:41

ポイント14pt

フリー(GNU)の統計パッケージRではこうなります。

> mat<-matrix(floor(runif(100)*101),10,10)

> mat

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]

[1,] 22 44 74 59 63 72 56 65 52 90

[2,] 38 89 95 83 14 30 6 13 64 10

[3,] 75 51 44 14 27 34 49 72 22 34

[4,] 2 37 52 62 43 0 62 63 98 23

[5,] 15 22 17 73 60 90 16 69 40 51

[6,] 2 94 73 7 91 23 42 93 52 25

[7,] 86 90 33 18 22 27 34 27 93 37

[8,] 2 32 54 90 27 45 88 3 30 11

[9,] 70 36 32 74 82 95 56 3 80 99

[10,] 63 48 60 28 21 99 41 67 10 46

> cbind(apply(mat,1,sd),mat)

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]

[1,] 18.42130 22 44 74 59 63 72 56 65 52 90

[2,] 35.33899 38 89 95 83 14 30 6 13 64 10

[3,] 20.16488 75 51 44 14 27 34 49 72 22 34

[4,] 30.14705 2 37 52 62 43 0 62 63 98 23

[5,] 27.33354 15 22 17 73 60 90 16 69 40 51

[6,] 35.85403 2 94 73 7 91 23 42 93 52 25

[7,] 30.21424 86 90 33 18 22 27 34 27 93 37

[8,] 31.58692 2 32 54 90 27 45 88 3 30 11

[9,] 30.69220 70 36 32 74 82 95 56 3 80 99

[10,] 25.72526 63 48 60 28 21 99 41 67 10 46

0から100っていうのが100を含むのかどうかわかりませんが、

100を含まないときには101を100に

整数でなくていいときはfloorの部分を削除してください。

Rだとデフォルトでより高品質な<a href=”

” target=_blank>メルセンヌツイスター</a>での乱数です。

id:wan2ree No.3

wan2ree回答回数12ベストアンサー獲得回数02003/10/08 02:07:52

ポイント14pt

http://www.fuji.ne.jp/~excelyou/

Excelファンクラブ

URLはダミーです。

全要素とは、10行10列の乱数と各列の標準偏差ですよね?

EXCEL VBAでもよく、かつ、ten(10,10)をEXCELのワークシートとして、そこに値が表示(出力)させるのでよいのであれば、

Sub ten()

Dim i As Integer, j As Integer

For i = 1 To 10

For j = 2 To 11

Cells(i, j) = Int(Rnd() * 100)

Next j

Next i

For i = 1 To 10

Cells(i, 1) = Application.WorksheetFunction.StDev(Range(Cells(i, 2), Cells(i, 11)))

Next i

End Sub

これを標準モジュールにペーストして実行すれば出ます。

id:thim No.4

thim回答回数35ベストアンサー獲得回数12003/10/08 09:41:48

ポイント14pt

気分転換がてらやっつけで作ったので嘘が混じってるはず。OS,言語指定なしだったので適当にJavaで。

乱数(RND)とあるのでJavaではないんでしょうね。参考に。

次回からは分からないところだけ聞いた方がいいと思いますよ。作ってくださいだとちょっと・・・。

public class Deviation {

private static final int ROW_NUM = 10;

private static final int COLUMN_NUM = 10;

public static void main(String[] args) {

double[][] ten = createTen();

printTen(calcDeviation(ten));

}

private static double[][] createTen() {

double[][] ten = new double[ROW_NUM][COLUMN_NUM + 1];

for (int i = 0; i < ROW_NUM; i++) {

for (int j = 0; j <= COLUMN_NUM; j++) {

ten[i][j] = new Double(Math.random() * 100).intValue();

}

}

return ten;

}

private static double[] calcDeviation(double[] ten) {

for (int i = 0; i < ten.length; i++) {

double averageNum = average(ten[i]);

double[] powArray = new double[ten[i].length - 1];

for (int j = 1; j < ten[i].length; j++) {

powArray[j - 1] = Math.pow(ten[i][j] - averageNum, 2.0);

}

ten[i][0] = root(average(powArray));

}

return ten;

}

private static double sum(double[] array) {

double sum = 0;

for (int i = 0; i < array.length; i++) {

sum += array[i];

}

return sum;

}

private static double average(double[] array) {

return sum(array) / array.length;

}

private static double root(double num) {

return Math.sqrt(num);

}

private static void printTen(double[][] ten) {

for (int i = 0; i < ten.length; i++) {

for (int j = 0; j < ten[i].length; j++) {

System.out.println(”ten[” + i + ”][” + j + ”] = ” + ten[i][j]);

}

}

}

}

id:yoneyore No.5

riceflow回答回数95ベストアンサー獲得回数52003/10/08 19:14:53

ポイント14pt

0番目と書かれているC言語でしょうか?ということでC言語で書いてみます。ちなみにrndのとこはtime関数を使った方がよいかもしれませんが、使い方を忘れてしまったので調べてみてください。URLは検算用です。

#include<stdio.h>

#include<math.h>

int main(){

int i,j,data;

float ten[10][11],mean[10];

/*tenに数を代入及び平均値の計算*/

for(i=0;i<10;i++){

ten[i][0]=0.0;/*変数の初期化*/

mean[i]=0.0;

for(j=1;j<11;j++){

data=(int)rand();/*ランダム値の生成*/

data=data%101;

ten[i][j]=data;

mean[i]=mean[i]+data;

}

mean[i]=mean[i]/10;

}

/*標準偏差の計算*/

for(i=0;i<10;i++){

for(j=1;j<11;j++){

ten[i][0]=ten[i][0]+pow(ten[i][j]-mean[i],2);/*分散の計算*/

}

ten[i][0]=sqrt(ten[i][0]/10);/*標準偏差の計算*/

}

/*結果の出力*/

for(i=0;i<10;i++){

for(j=0;j<11;j++){

if(j==0)printf(”標準偏差=%f:使用データ ”,ten[i][j]);/*小数部分*/

elseprintf(”%d ”,(int)ten[i][j]);/*整数部分*/

}

printf(”¥n”);/*改行*/

}

}

id:takasiym No.6

takasiym回答回数165ベストアンサー獲得回数02003/10/09 01:29:20

ポイント14pt

URLはダミーです。

Visual Basicで作ってみました。

この関数を実行すると、

戻り値に演算結果が整形されて返ります。

間違ってたらゴメンなさい。

適宜直してください(汗。

--------------------------------------

function GenerateRndMatrix() as string

Randomize Time

Dim row, col, sum As Integer

Dim avg, sum_dx As Double

Dim matrix(1 To 10, 0 To 10) As Double

Dim out As String

out = ””

For row = 1 To 10

sum = 0

For col = 1 To 10

matrix(row, col) = Int(Rnd() * 100)

sum = sum + matrix(row, col)

Next

avg = CDbl(sum) / 10

sum_dx = 0

For col = 1 To 10

sum_dx = sum_dx + (avg - matrix(row, col)) ^ 2

Next

matrix(row, 0) = Sqr(sum_dx / 10)

Next

For row = 1 To 10

out = out + Format(matrix(row, 0), ”###0.00”)

For col = 1 To 10

out = out + Format(matrix(row, col), ”, ###”)

Next

out = out + vbCrLf

Next

GenerateRndMatrix = out

end function

--------------------------------------

id:bravo No.7

bravo回答回数4ベストアンサー獲得回数02003/10/09 11:35:41

ポイント13pt

Pythonだとこういう風になるのかな。

#!/usr/bin/env python

from math import sqrt

from random import randint

def stdev(listdata):

ave = 0

for data in listdata:

ave += data

ave = ave / len(listdata)

sum = 0

for data in listdata:

sum += abs(data - ave) * abs(data - ave)

sum = sum / len(listdata)

return sqrt(sum)

matrixdata = [[randint(0, 100) for x in range(10)] for y in range(10)]

matrixdata.insert(0, [stdev(listdata) for listdata in matrixdata])

print matrixdata

id:takasiym No.8

takasiym回答回数165ベストアンサー獲得回数02003/10/10 01:30:15

ポイント13pt

URLはダミーです。

寝る前にphpで作りました。

# 置き換えただけですが。。。

はてなが<とか>とかに変換すると信じて貼り付けます(汗。

宜しくお願いします。

<?php

function make_seed() {

list($usec, $sec) = explode(’ ’, microtime());

return (float) $sec + ((float) $usec * 100000);

}

function GenerateRndMatrix() {

srand(make_seed());

$out = ”<table border=¥”1¥”>¥n”;

for($row=1; $row<=10; $row++) {

$sum = 0;

for($col=1; $col<=10; $col++) {

$matrix[$row][$col] = rand(0,100);

$sum = $sum + $matrix[$row][$col];

}

$avg = $sum / 10;

$sum_dx = 0;

for($col=1; $col<=10; $col++) {

$sum_dx += pow($avg - $matrix[$row][$col], 2);

}

$matrix[$row][0] = sqrt($sum_dx / 10);

}

for($row=1; $row<=10; $row++) {

$out.=”<tr>¥n”;

$out .= ereg_replace(” ”, ” ”, sprintf(”<td>%3.2f</td>”, $matrix[$row][0]));

for($col=1; $col<=10; $col++) {

$out .= ereg_replace(” ”, ” ”, sprintf(”<td>%3d</td>”, $matrix[$row][$col]));

}

$out.=”¥n</tr>¥n”;

}

$out.=”</table>¥n”;

return $out;

}

?>

<html>

<head>

<title>GenerateRndMatrix</title>

</head>

<body>

<?php echo GenerateRndMatrix(); ?>

</body>

</html>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません