Skip to content

Instantly share code, notes, and snippets.

@OnesimusUnbound
Created June 21, 2024 22:38
Show Gist options
  • Save OnesimusUnbound/a5c0e53ffda0b8d914b879dbb0bac86b to your computer and use it in GitHub Desktop.
Save OnesimusUnbound/a5c0e53ffda0b8d914b879dbb0bac86b to your computer and use it in GitHub Desktop.
Generate measurements
param(
[int]$numRecords
)
$filename = "measurements.txt"
if ($numRecords -eq $null) {
Write-Host "Usage: create_measurements.ps1 <number of records to create>"
exit 1
}
$random = [System.Random]::new();
function Get-GaussianRandomNumber {
param (
[double]$mean,
[double]$stdDev
)
$u1 = $random.NextDouble()
$u2 = $random.NextDouble()
$randStdNormal = [math]::Sqrt(-2.0 * [math]::Log($u1)) * [math]::Sin((2.0 * [math]::PI) * $u2)
$randNormal = $mean + $stdDev * $randStdNormal
return $randNormal
}
$stations = @(
@{id="Abha"; meanTemperature=18.0},
@{id="Abidjan"; meanTemperature=26.0},
@{id="Abéché"; meanTemperature=29.4},
@{id="Accra"; meanTemperature=26.4},
@{id="Addis Ababa"; meanTemperature=16.0},
@{id="Adelaide"; meanTemperature=17.3},
@{id="Aden"; meanTemperature=29.1},
@{id="Ahvaz"; meanTemperature=25.4},
@{id="Albuquerque"; meanTemperature=14.0},
@{id="Alexandra"; meanTemperature=11.0},
@{id="Alexandria"; meanTemperature=20.0},
@{id="Algiers"; meanTemperature=18.2},
@{id="Alice Springs"; meanTemperature=21.0},
@{id="Almaty"; meanTemperature=10.0},
@{id="Amsterdam"; meanTemperature=10.2},
@{id="Anadyr"; meanTemperature=-6.9},
@{id="Anchorage"; meanTemperature=2.8},
@{id="Andorra la Vella"; meanTemperature=9.8},
@{id="Ankara"; meanTemperature=12.0},
@{id="Antananarivo"; meanTemperature=17.9},
@{id="Antsiranana"; meanTemperature=25.2},
@{id="Arkhangelsk"; meanTemperature=1.3},
@{id="Ashgabat"; meanTemperature=17.1},
@{id="Asmara"; meanTemperature=15.6},
@{id="Assab"; meanTemperature=30.5},
@{id="Astana"; meanTemperature=3.5},
@{id="Athens"; meanTemperature=19.2},
@{id="Atlanta"; meanTemperature=17.0},
@{id="Auckland"; meanTemperature=15.2},
@{id="Austin"; meanTemperature=20.7},
@{id="Baghdad"; meanTemperature=22.77},
@{id="Baguio"; meanTemperature=19.5},
@{id="Baku"; meanTemperature=15.1},
@{id="Baltimore"; meanTemperature=13.1},
@{id="Bamako"; meanTemperature=27.8},
@{id="Bangkok"; meanTemperature=28.6},
@{id="Bangui"; meanTemperature=26.0},
@{id="Banjul"; meanTemperature=26.0},
@{id="Barcelona"; meanTemperature=18.2},
@{id="Bata"; meanTemperature=25.1},
@{id="Batumi"; meanTemperature=14.0},
@{id="Beijing"; meanTemperature=12.9},
@{id="Beirut"; meanTemperature=20.9},
@{id="Belgrade"; meanTemperature=12.5},
@{id="Belize City"; meanTemperature=26.7},
@{id="Benghazi"; meanTemperature=19.9},
@{id="Bergen"; meanTemperature=7.7},
@{id="Berlin"; meanTemperature=10.3},
@{id="Bilbao"; meanTemperature=14.7},
@{id="Birao"; meanTemperature=26.5},
@{id="Bishkek"; meanTemperature=11.3},
@{id="Bissau"; meanTemperature=27.0},
@{id="Blantyre"; meanTemperature=22.2},
@{id="Bloemfontein"; meanTemperature=15.6},
@{id="Boise"; meanTemperature=11.4},
@{id="Bordeaux"; meanTemperature=14.2},
@{id="Bosaso"; meanTemperature=30.0},
@{id="Boston"; meanTemperature=10.9},
@{id="Bouaké"; meanTemperature=26.0},
@{id="Bratislava"; meanTemperature=10.5},
@{id="Brazzaville"; meanTemperature=25.0},
@{id="Bridgetown"; meanTemperature=27.0},
@{id="Brisbane"; meanTemperature=21.4},
@{id="Brussels"; meanTemperature=10.5},
@{id="Bucharest"; meanTemperature=10.8},
@{id="Budapest"; meanTemperature=11.3},
@{id="Bujumbura"; meanTemperature=23.8},
@{id="Bulawayo"; meanTemperature=18.9},
@{id="Burnie"; meanTemperature=13.1},
@{id="Busan"; meanTemperature=15.0},
@{id="Cabo San Lucas"; meanTemperature=23.9},
@{id="Cairns"; meanTemperature=25.0},
@{id="Cairo"; meanTemperature=21.4},
@{id="Calgary"; meanTemperature=4.4},
@{id="Canberra"; meanTemperature=13.1},
@{id="Cape Town"; meanTemperature=16.2},
@{id="Changsha"; meanTemperature=17.4},
@{id="Charlotte"; meanTemperature=16.1},
@{id="Chiang Mai"; meanTemperature=25.8},
@{id="Chicago"; meanTemperature=9.8},
@{id="Chihuahua"; meanTemperature=18.6},
@{id="Chișinău"; meanTemperature=10.2},
@{id="Chittagong"; meanTemperature=25.9},
@{id="Chongqing"; meanTemperature=18.6},
@{id="Christchurch"; meanTemperature=12.2},
@{id="City of San Marino"; meanTemperature=11.8},
@{id="Colombo"; meanTemperature=27.4},
@{id="Columbus"; meanTemperature=11.7},
@{id="Conakry"; meanTemperature=26.4},
@{id="Copenhagen"; meanTemperature=9.1},
@{id="Cotonou"; meanTemperature=27.2},
@{id="Cracow"; meanTemperature=9.3},
@{id="Da Lat"; meanTemperature=17.9},
@{id="Da Nang"; meanTemperature=25.8},
@{id="Dakar"; meanTemperature=24.0},
@{id="Dallas"; meanTemperature=19.0},
@{id="Damascus"; meanTemperature=17.0},
@{id="Dampier"; meanTemperature=26.4},
@{id="Dar es Salaam"; meanTemperature=25.8},
@{id="Darwin"; meanTemperature=27.6},
@{id="Denpasar"; meanTemperature=23.7},
@{id="Denver"; meanTemperature=10.4},
@{id="Detroit"; meanTemperature=10.0},
@{id="Dhaka"; meanTemperature=25.9},
@{id="Dikson"; meanTemperature=-11.1},
@{id="Dili"; meanTemperature=26.6},
@{id="Djibouti"; meanTemperature=29.9},
@{id="Dodoma"; meanTemperature=22.7},
@{id="Dolisie"; meanTemperature=24.0},
@{id="Douala"; meanTemperature=26.7},
@{id="Dubai"; meanTemperature=26.9},
@{id="Dublin"; meanTemperature=9.8},
@{id="Dunedin"; meanTemperature=11.1},
@{id="Durban"; meanTemperature=20.6},
@{id="Dushanbe"; meanTemperature=14.7},
@{id="Edinburgh"; meanTemperature=9.3},
@{id="Edmonton"; meanTemperature=4.2},
@{id="El Paso"; meanTemperature=18.1},
@{id="Entebbe"; meanTemperature=21.0},
@{id="Erbil"; meanTemperature=20.0},
@{id="Esperance"; meanTemperature=16.5},
@{id="Fairbanks"; meanTemperature=-3.2},
@{id="Faisalabad"; meanTemperature=24.0},
@{id="Fortaleza"; meanTemperature=26.8},
@{id="Fort Worth"; meanTemperature=19.3},
@{id="Freeport"; meanTemperature=24.3},
@{id="Freetown"; meanTemperature=27.0},
@{id="Fukuoka"; meanTemperature=17.0},
@{id="Funafuti"; meanTemperature=29.2},
@{id="Gabala"; meanTemperature=11.4},
@{id="Galapagos"; meanTemperature=24.7},
@{id="Galle"; meanTemperature=26.7},
@{id="Gander"; meanTemperature=3.9},
@{id="Gao"; meanTemperature=29.4},
@{id="Garoua"; meanTemperature=27.5},
@{id="Geelong"; meanTemperature=14.5},
@{id="Georgetown"; meanTemperature=26.4},
@{id="Gibraltar"; meanTemperature=18.6},
@{id="Gitega"; meanTemperature=19.5},
@{id="Giza"; meanTemperature=20.8},
@{id="Guadalajara"; meanTemperature=20.5},
@{id="Guangzhou"; meanTemperature=22.6},
@{id="Guatemala City"; meanTemperature=18.1},
@{id="Guayaquil"; meanTemperature=25.5},
@{id="Gustavo Díaz Ordaz"; meanTemperature=24.0},
@{id="Hamburg"; meanTemperature=9.4},
@{id="Hamilton"; meanTemperature=15.6},
@{id="Hanoi"; meanTemperature=23.6},
@{id="Harare"; meanTemperature=17.9},
@{id="Harbin"; meanTemperature=3.6},
@{id="Hargeisa"; meanTemperature=18.4},
@{id="Havana"; meanTemperature=25.5},
@{id="Helsinki"; meanTemperature=5.9},
@{id="Ho Chi Minh City"; meanTemperature=27.1},
@{id="Hobart"; meanTemperature=13.0},
@{id="Hong Kong"; meanTemperature=23.4},
@{id="Honolulu"; meanTemperature=25.2},
@{id="Houston"; meanTemperature=20.8},
@{id="Hué"; meanTemperature=25.1},
@{id="Hyderabad"; meanTemperature=26.0},
@{id="Ilulissat"; meanTemperature=-3.2},
@{id="Indianapolis"; meanTemperature=11.8},
@{id="Innsbruck"; meanTemperature=9.4},
@{id="Invercargill"; meanTemperature=9.9},
@{id="Ipoh"; meanTemperature=27.0},
@{id="Iqaluit"; meanTemperature=-9.8},
@{id="Iquique"; meanTemperature=17.0},
@{id="Irkutsk"; meanTemperature=1.1},
@{id="Islamabad"; meanTemperature=21.3},
@{id="Istanbul"; meanTemperature=14.3},
@{id="Izmir"; meanTemperature=17.4},
@{id="Jackson"; meanTemperature=18.5},
@{id="Jacksonville"; meanTemperature=20.4},
@{id="Jakarta"; meanTemperature=27.6},
@{id="Jammu"; meanTemperature=24.5},
@{id="Jinan"; meanTemperature=14.2},
@{id="Johannesburg"; meanTemperature=16.0},
@{id="Juba"; meanTemperature=27.1},
@{id="Juneau"; meanTemperature=3.9},
@{id="Kabul"; meanTemperature=12.1},
@{id="Kaduna"; meanTemperature=25.0},
@{id="Kagoshima"; meanTemperature=18.0},
@{id="Kahului"; meanTemperature=24.2},
@{id="Kaohsiung"; meanTemperature=25.0},
@{id="Karachi"; meanTemperature=26.7},
@{id="Kathmandu"; meanTemperature=18.2},
@{id="Khartoum"; meanTemperature=29.6},
@{id="Kiev"; meanTemperature=8.4},
@{id="Kigali"; meanTemperature=20.6},
@{id="Kingston"; meanTemperature=26.9},
@{id="Kinshasa"; meanTemperature=26.4},
@{id="Kolkata"; meanTemperature=26.9},
@{id="Koror"; meanTemperature=28.0},
@{id="Kos"; meanTemperature=18.7},
@{id="Kuala Lumpur"; meanTemperature=27.4},
@{id="Kuching"; meanTemperature=27.2},
@{id="Kuwait City"; meanTemperature=26.6},
@{id="Kyoto"; meanTemperature=15.9},
@{id="Lagos"; meanTemperature=27.0},
@{id="La Paz"; meanTemperature=10.4},
@{id="Las Palmas"; meanTemperature=21.3},
@{id="Las Vegas"; meanTemperature=19.8},
@{id="Launceston"; meanTemperature=12.5},
@{id="Libreville"; meanTemperature=26.0},
@{id="Lilongwe"; meanTemperature=19.3},
@{id="Lima"; meanTemperature=19.2},
@{id="Limerick"; meanTemperature=9.9},
@{id="Linz"; meanTemperature=9.6},
@{id="Lisbon"; meanTemperature=17.5},
@{id="Ljubljana"; meanTemperature=9.8},
@{id="Lomé"; meanTemperature=27.0},
@{id="London"; meanTemperature=11.1},
@{id="Los Angeles"; meanTemperature=18.3},
@{id="Luanda"; meanTemperature=24.2},
@{id="Lubumbashi"; meanTemperature=20.8},
@{id="Lucknow"; meanTemperature=25.7},
@{id="Lusaka"; meanTemperature=20.2},
@{id="Luxembourg"; meanTemperature=9.1},
@{id="Macao"; meanTemperature=22.8},
@{id="Mackay"; meanTemperature=23.6},
@{id="Madrid"; meanTemperature=14.3},
@{id="Majuro"; meanTemperature=27.6},
@{id="Malabo"; meanTemperature=25.9},
@{id="Malang"; meanTemperature=22.2},
@{id="Malé"; meanTemperature=28.0},
@{id="Malindi"; meanTemperature=25.9},
@{id="Malta"; meanTemperature=19.3},
@{id="Manaus"; meanTemperature=26.6},
@{id="Manila"; meanTemperature=27.2},
@{id="Maputo"; meanTemperature=22.2},
@{id="Maseru"; meanTemperature=14.8},
@{id="Matadi"; meanTemperature=25.6},
@{id="Matsumoto"; meanTemperature=11.8},
@{id="Mazatlán"; meanTemperature=25.0},
@{id="Mbabane"; meanTemperature=16.3},
@{id="Mecca"; meanTemperature=30.8},
@{id="Medan"; meanTemperature=26.2},
@{id="Medellín"; meanTemperature=22.0},
@{id="Melbourne"; meanTemperature=15.2},
@{id="Memphis"; meanTemperature=17.0},
@{id="Mexico City"; meanTemperature=15.9},
@{id="Miami"; meanTemperature=23.9},
@{id="Minsk"; meanTemperature=6.4},
@{id="Mogadishu"; meanTemperature=27.1},
@{id="Monaco"; meanTemperature=16.0},
@{id="Monrovia"; meanTemperature=25.7},
@{id="Montevideo"; meanTemperature=16.6},
@{id="Montreal"; meanTemperature=6.4},
@{id="Moroni"; meanTemperature=24.9},
@{id="Moscow"; meanTemperature=5.4},
@{id="Multan"; meanTemperature=25.9},
@{id="Mumbai"; meanTemperature=26.7},
@{id="Munich"; meanTemperature=7.7},
@{id="Muscat"; meanTemperature=27.6},
@{id="Nairobi"; meanTemperature=19.2},
@{id="Nanjing"; meanTemperature=15.5},
@{id="Naples"; meanTemperature=17.2},
@{id="Nassau"; meanTemperature=24.5},
@{id="Naypyidaw"; meanTemperature=27.0},
@{id="Ndjamena"; meanTemperature=27.6},
@{id="New Delhi"; meanTemperature=25.3},
@{id="New Orleans"; meanTemperature=20.6},
@{id="New York"; meanTemperature=13.8},
@{id="Niamey"; meanTemperature=29.0},
@{id="Nice"; meanTemperature=16.3},
@{id="Nicosia"; meanTemperature=20.1},
@{id="Niigata"; meanTemperature=12.3},
@{id="Nouakchott"; meanTemperature=24.4},
@{id="Noumea"; meanTemperature=23.0},
@{id="Nukualofa"; meanTemperature=23.5},
@{id="Nuremberg"; meanTemperature=8.8},
@{id="Nuuk"; meanTemperature=-1.2},
@{id="Oaxaca"; meanTemperature=20.5},
@{id="Odessa"; meanTemperature=11.5},
@{id="Osaka"; meanTemperature=16.6},
@{id="Oslo"; meanTemperature=6.7},
@{id="Ottawa"; meanTemperature=5.8},
@{id="Ouagadougou"; meanTemperature=28.1},
@{id="Padang"; meanTemperature=26.4},
@{id="Pago Pago"; meanTemperature=27.0},
@{id="Palembang"; meanTemperature=26.9},
@{id="Panama City"; meanTemperature=27.0},
@{id="Paramaribo"; meanTemperature=27.1},
@{id="Paris"; meanTemperature=11.7},
@{id="Patna"; meanTemperature=25.7},
@{id="Pekanbaru"; meanTemperature=27.0},
@{id="Peshawar"; meanTemperature=22.0},
@{id="Philadelphia"; meanTemperature=13.0},
@{id="Phnom Penh"; meanTemperature=28.0},
@{id="Phuket"; meanTemperature=28.0},
@{id="Phu Quoc"; meanTemperature=27.5},
@{id="Podgorica"; meanTemperature=13.3},
@{id="Port Moresby"; meanTemperature=27.1},
@{id="Port Louis"; meanTemperature=23.4},
@{id="Port Vila"; meanTemperature=23.8},
@{id="Prague"; meanTemperature=9.1},
@{id="Praia"; meanTemperature=24.1},
@{id="Pretoria"; meanTemperature=18.0},
@{id="Puebla"; meanTemperature=16.0},
@{id="Pune"; meanTemperature=24.0},
@{id="Pyongyang"; meanTemperature=10.2},
@{id="Quebec"; meanTemperature=3.8},
@{id="Quito"; meanTemperature=13.3},
@{id="Rabat"; meanTemperature=17.8},
@{id="Rawalpindi"; meanTemperature=21.3},
@{id="Recife"; meanTemperature=25.5},
@{id="Reykjavik"; meanTemperature=4.2},
@{id="Riga"; meanTemperature=6.8},
@{id="Riyadh"; meanTemperature=25.6},
@{id="Rome"; meanTemperature=15.7},
@{id="Saipan"; meanTemperature=28.0},
@{id="Salvador"; meanTemperature=25.1},
@{id="Salzburg"; meanTemperature=9.3},
@{id="Samoa"; meanTemperature=27.0},
@{id="San Antonio"; meanTemperature=20.5},
@{id="San Diego"; meanTemperature=17.6},
@{id="San Francisco"; meanTemperature=13.6},
@{id="San José"; meanTemperature=21.4},
@{id="San Juan"; meanTemperature=26.7},
@{id="San Salvador"; meanTemperature=24.0},
@{id="Santa Cruz"; meanTemperature=23.4},
@{id="Santa Marta"; meanTemperature=27.0},
@{id="Santorini"; meanTemperature=17.1},
@{id="Sao Paulo"; meanTemperature=19.0},
@{id="Sapporo"; meanTemperature=8.6},
@{id="Sarajevo"; meanTemperature=10.2},
@{id="Seattle"; meanTemperature=11.6},
@{id="Seoul"; meanTemperature=11.9},
@{id="Shanghai"; meanTemperature=16.0},
@{id="Singapore"; meanTemperature=27.0},
@{id="Sofia"; meanTemperature=10.8},
@{id="South Tarawa"; meanTemperature=28.2},
@{id="Stockholm"; meanTemperature=7.1},
@{id="Sucre"; meanTemperature=13.0},
@{id="Surabaya"; meanTemperature=26.9},
@{id="Surat"; meanTemperature=26.7},
@{id="Suva"; meanTemperature=25.5},
@{id="Sydney"; meanTemperature=18.0},
@{id="Tabriz"; meanTemperature=11.0},
@{id="Taichung"; meanTemperature=23.0},
@{id="Taipei"; meanTemperature=23.0},
@{id="Tallinn"; meanTemperature=6.6},
@{id="Tashkent"; meanTemperature=14.4},
@{id="Tbilisi"; meanTemperature=13.4},
@{id="Tegucigalpa"; meanTemperature=22.0},
@{id="Tehran"; meanTemperature=17.0},
@{id="Thessaloniki"; meanTemperature=15.3},
@{id="Thimphu"; meanTemperature=12.7},
@{id="Tianjin"; meanTemperature=14.0},
@{id="Tijuana"; meanTemperature=17.0},
@{id="Tirana"; meanTemperature=15.6},
@{id="Tokyo"; meanTemperature=16.4},
@{id="Toronto"; meanTemperature=8.4},
@{id="Tórshavn"; meanTemperature=6.5},
@{id="Tripoli"; meanTemperature=20.3},
@{id="Tunis"; meanTemperature=18.3},
@{id="Ulaanbaatar"; meanTemperature=-0.4},
@{id="Vaduz"; meanTemperature=9.7},
@{id="Valletta"; meanTemperature=19.3},
@{id="Vancouver"; meanTemperature=10.0},
@{id="Victoria"; meanTemperature=27.0},
@{id="Vienna"; meanTemperature=9.4},
@{id="Vientiane"; meanTemperature=25.5},
@{id="Vilnius"; meanTemperature=7.0},
@{id="Warsaw"; meanTemperature=7.7},
@{id="Washington"; meanTemperature=13.5},
@{id="Wellington"; meanTemperature=13.3},
@{id="West Island"; meanTemperature=27.0},
@{id="Windhoek"; meanTemperature=20.5},
@{id="Winnipeg"; meanTemperature=2.6},
@{id="Warsaw"; meanTemperature=8.2},
@{id="Wuhan"; meanTemperature=17.0},
@{id="Wuxi"; meanTemperature=16.0},
@{id="Xiamen"; meanTemperature=20.0},
@{id="Yangon"; meanTemperature=27.5},
@{id="Yaoundé"; meanTemperature=23.5},
@{id="Yerevan"; meanTemperature=11.6},
@{id="Yokohama"; meanTemperature=15.9},
@{id="Zagreb"; meanTemperature=11.1},
@{id="Zanzibar"; meanTemperature=26.8},
@{id="Zurich"; meanTemperature=8.5}
);
$startTime = Get-Date
$fileStream = $null
$streamWriter = $null
try {
[int]$stationCount = $stations.Count;
$path = Join-Path (Resolve-Path ".") $filename
$fileStream = [System.IO.File]::Open($path, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write, [System.IO.FileShare]::None)
$streamWriter = [System.IO.StreamWriter]::new($fileStream, [System.Text.Encoding]::Default, 4096)
for ($i = 0; $i -lt $numRecords; $i++) {
$station = $stations[$i % $stationCount]
$stationId = $station.id
$stationTemp = [math]::Round((Get-GaussianRandomNumber -mean $station.meanTemperature -stdDev 10.0), 1)
[void]$streamWriter.WriteLine("$stationId;$stationTemp")
if ($i % 100000 -eq 0) {
Write-Output "$([math]::Round($i / $numRecords * 100, 2))% complete"
}
}
}
finally {
if ($null -ne $streamWriter) {
$streamWriter.Close()
}
if ($null -ne $fileStream) {
$fileStream.Close()
}
}
$endTime = Get-Date
$duration = $endTime - $startTime
Write-Output "Start Time: $startTime"
Write-Output "End Time: $endTime"
Write-Output "Duration: $duration"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment