2014-10-29 2 views
1

이것은 매우 간단하고 사소한 것처럼 보일 것입니다. 그러나 나는 이것을 위해 오늘 아침 Google에서 어떤 대답도 찾을 수 없습니다.F 배열의 요소 증가 #

F 번호에
private static readonly int MaxAge = 131; 
    private static int[] Numbers = new int[MaxAge]; 
    static void Main() 
    { 
     Random random = new Random(130); 
     for (int i = 1; i < 1000000 - 1; i++) Numbers[random.Next(1,MaxAge)] += 1; 
     for (int i = 1;i <= Numbers.Length - 1; i++) Console.WriteLine("{0}: {1}", i, Numbers[i]); 
     Console.ReadLine(); 
    } 

내가이와 함께 시작 해요 :

나는 F 번호에 단 몇 분 (이 도전에 대한 대답)에서 생산 된 C#을이 바보 비트 변환 해요

let r = new Random() 
let numbers = Array.create 131 int 
let x = for i in 1 .. 100000 do 
        let rn =r.Next(1,130) 
        numbers.[rn] <- numbers.[rn] + 1 

그러나, + 1 난 그냥 아주 이해할 수없는 오류 발생 : 오류 1 유형 'INT'유형 '과 일치하지 않습니다'A -> INT '

내 의도는 단순히에서이다 주어진 인덱스에 저장된 값을 1에서 131 사이의 임의의 값으로 생성하여 1에서 131 사이의 백만 개의 무작위 정수를 시뮬레이션하고 버킷에 넣습니다.

아무에게도 나에게 제공 할 수있는 순간은 여기 잠깐?

답변

2

정수 값을 반환하는 Array.create에 제네레이터 함수가 없습니다. 'int'는 obj를 int로 변환하는 함수 값이므로 함수 배열을 만들었습니다. 당신은 제로의 배열을 만듭니다

let numbers = Array.create 131 0 

처럼 단지 정수 값으로 배열을 초기화 할 수 있습니다.

let numbers = [|for i in 1 .. 131 -> i * i|] 

그러나에 : 당신은 또한 원하는 발전기 기능을 사용할 수 있습니다

let numbers = [|for i in 1 .. 131 -> 0|] 

대신 0 : 또는 당신은 int 값 은 또한 당신이 F #으로 이런 식으로 배열을 생성 할 수 반환, 다른 기능을 사용할 수 있습니다 이 경우 가장 쉬운 방법은

Array.zeroCreate 131 
+0

내 문제를 해결했습니다! –