ryuchan00 / basic_programing

UEC
0 stars 0 forks source link

8 ビセキングを倒す! #8

Open hayato0718 opened 4 years ago

hayato0718 commented 4 years ago

まちがい


エ     (n-1).step(1,-1) do |i|
コ         x = a[2*i] - a[2*i+1]
イ     end
イ end
hayato0718 commented 4 years ago

せいかい


ア def modcopy(a)
ウ   b = Array.new(a.length, 0)
オ   n = a.length / 2
カ   n.times do |i|
キ     b[i] = a[i]
セ     b[2*n - (i + 1)] = a[n + i]
イ   end
エ   return b
イ end
hayato0718 commented 4 years ago

まちがい


ア def chgarray(a)
エ     (n-1).step(1,-1) do |i|
コ         x = a[2*i] - a[2*i+1]
イ     end
イ end
hayato0718 commented 4 years ago

せいかい


ア def chgarray(a) 
キ   n = a.length / 2
ウ   n.times do |i| 
サ     x = a[i]
ソ     a[i] = a[2*n-(i+1)]
ニ     a[2*n-(i+1)] = x
イ   end 
イ end 
ryuchan00 commented 4 years ago
# 演習1
def bench(count = 1)
  t1 = Process.times.utime
  count.times do
    yield
  end
  t2 = Process.times.utime
  return t2 - t1
end

def square1(n)
  return n * n
end

def pirandom(n)
  count = 0
  n.times do
    x = rand
    y = rand
    if x ** 2 + y ** 2 < 1.0
      count = count + 1
    end
  end
  return 4 * count.to_f / n
end

def sekibun(n)
  count = 0
  n.times do
    x = rand
    y = rand
    if x >= y
      count = count + 1
    end
  end
  return count.to_f / n
end

def sekibun2(n)
  count = 0
  n.times do
    x = rand
    y = rand
    if x ** 2 > y 
      count = count + 1
    end
  end
  return count.to_f / n
end

def sekibun3(n)
  count = 0
  a = 4 / 3.to_f
  n.times do
    x = rand * 2
    y = rand
    if x >= y ** 2
      count = count + 1
    end
  end

  p a
  p count
  p n
  return a * count.to_f /  n
end
ryuchan00 commented 4 years ago

活動内容報告 #08 学籍番号:1920031 氏名:山川柳太郎 ペア学籍番号・氏名(または「個人作業」): 提出日付:2019/12/09

[作成したプログラム]

def sekibun(n)
  count = 0
  n.times do
    x = rand
    y = rand
    if x >= y
      count = count + 1
    end
  end
  return count.to_f / n
end

def sekibun2(n)
  count = 0
  n.times do
    x = rand
    y = rand
    if x ** 2 > y 
      count = count + 1
    end
  end
  return count.to_f / n
end

[簡単な説明] sekibunは演習3a、sekibun2は演習3bのプログラムである。積分範囲に何回入っているか計測して、積分の結果の近似値を出す。

[アンケート] Q1. 時間計算量(計算時間ではない)の考え方は納得しましたか。 少しだけわかりました

Q2. 乱数を使ったアルゴリズムの利点を納得しましたか。 難しいです。

Q3. リフレクション(今回の課題で分かったこと)・感想・要望をどうぞ 積分が難しいです。

hayato0718 commented 4 years ago

活動内容報告 #08
学籍番号:1920003
氏名:伊東 隼人

提出日付: 2019/12/09

[作成したプログラム]

def sekibun(n)
    count = 0
    n.times do
        x = rand()
        y = rand()
        if y <=x then count = count + 1 end
    end
    return count.to_f / n
end

これを実行しました。

irb(main):007:0> sekibun 100
=> 0.47
irb(main):008:0> sekibun 100
=> 0.49
irb(main):009:0> sekibun 100
=> 0.54
irb(main):010:0> sekibun 100
=> 0.6
irb(main):011:0> sekibun 100
=> 0.54
irb(main):012:0> sekibun 100
=> 0.48
irb(main):013:0> sekibun 100
=> 0.47
irb(main):014:0> sekibun 100
=> 0.53
irb(main):015:0> sekibun 1000
=> 0.485
irb(main):016:0> sekibun 1000
=> 0.481
irb(main):017:0> sekibun 1000
=> 0.489
irb(main):018:0> sekibun 1000
=> 0.502

って感じでした。

[簡単な説明]
積分の範囲を指定して値を返している。

[アンケート]
Q1. 時間計算量(計算時間ではない)の考え方は納得しましたか。
納得できていないので線形代数のテスト終えたら考え直します。

Q2. 乱数を使ったアルゴリズムの利点を納得しましたか。
パソコンが得意な考え方なのはなんとなく理解しました。

Q3. リフレクション(今回の課題で分かったこと)・感想・要望をどうぞ。
前回の配列の考え方が難しすぎたので考え直します。
中間テストが終わったらみんなで考え直します。